Member 13359351 Ответов: 1

Шифрование относительного пути к файлу C#


ПРИВЕТ Я хочу зашифровать файл по относительному файлу. Я использую этот код для шифрования.
private void EncryptFile(string inputFile, string outputFile)
{
    try
    {
        string password = @"Cortex98";
        UnicodeEncoding UE = new UnicodeEncoding();
        byte[] key = UE.GetBytes(password);

        string cryptFile = outputFile;
        FileStream fsCrypt = new FileStream(cryptFile, FileMode.Create);

        RijndaelManaged RMCrypto = new RijndaelManaged();

        CryptoStream cs = new CryptoStream(fsCrypt,
            RMCrypto.CreateEncryptor(key, key),
            CryptoStreamMode.Write);

        FileStream fsIn = new FileStream(inputFile, FileMode.Open);

        int data;
        while ((data = fsIn.ReadByte()) != -1)
            cs.WriteByte((byte)data);


        fsIn.Close();
        cs.Close();
        fsCrypt.Close();
    }
    catch
    {
        MessageBox.Show("Encryption failed!", "Error");
    }
}


Когда я использую абсолютный путь, например:
EncryptFile(@"C:\mov\input.mp4",@"C:\mov\output.mp4");


Он успешно работает. Но когда я использую:

string inputRelative = @".\mov\input.mp4";
string outputRelative= @".\mov\output.mp4";
string input = Path.GetFullPath(inputRelative);
string output = Path.GetFullPath(outputRelative);
EncryptFile(input,output);


Это возвращает шифрование не удалось! Ошибка


An unhandled exception of type 'System.IO.DirectoryNotFoundException' occurred in mscorlib.dll Additional information: Could not find a part of the path 'C:\Users\Qsk\Desktop\FINFORM\cortexForm\bin\Debug\lib\corte‌​x\vCom.cortex


Что я уже пробовал:

<pre>string inputRelative = @".\mov\input.mp4";
string outputRelative= @".\mov\output.mp4";
string input = Path.GetFullPath(inputRelative);
string output = Path.GetFullPath(outputRelative);
EncryptFile(input,output);

1 Ответов

Рейтинг:
8

OriginalGriff

Посмотрите на сообщение об ошибке:

An unhandled exception of type 'System.IO.DirectoryNotFoundException' occurred in mscorlib.dll Additional information: Could not find a part of the path 'C:\Users\Qsk\Desktop\FINFORM\cortexForm\bin\Debug\lib\corte‌​x\vCom.cortex

Он не мог быть намного понятнее!
Это говорит о том, что часть пути не существует: относительный путь относится к текущей папке, которая обычно является папкой, в которой находится исполняемый файл, в котором вы его запускаете.
Чтобы сохранить (или открыть) файл, сначала должен быть создан весь путь, и он должен иметь правильные разрешения для пользователя, под которым работает приложение. Проверьте путь и используйте каталог.CreateDirectory метод, чтобы сделать это в случае необходимости.