问题描述
我开发了这个 C# 系统,它使用 aes-gcm 算法对文件进行真实加密。但是,我不希望加密文件与原始文件夹位于同一文件夹中。我怎样才能改变它?以下是我的代码片段以及我需要帮助的确切位置。
foreach (string inputFilePath in inputFilePaths)
{
// Proceed if file exists
if (File.Exists(inputFilePath))
{
try
{
// Encrypt
byte[] key = Passwordaskey();
string[] encryptedFileContents = AesGcmFileEncryption.Encrypt(inputFilePath,key);
// Here is where I need clarification
string outputFilePath = inputFilePath;
outputFilePath += ".AEncrypt";
if (File.Exists(outputFilePath))
{
skippedBecauseFileExists = true;
}
else
{
File.WriteallLines(outputFilePath,encryptedFileContents);
counter++;
// Status
label10.Text = "copied and encrypted \"" + Path.GetFileName(inputFilePath) + "\"";
}
}
catch (Exception ex)
解决方法
您可以创建子目录并在那里写入加密文件。
string inputDir = Path.GetDirectoryName(inputFilePath);
string outputDir = Path.Combine(inputDir,"EncryptedFiles");
Directory.CreateDirectory(outputDir);
string outputFileName = Path.GetFileName(inputFilePath) + ".AEncrypt";
string outputFilePath = Path.Combine(outputDir,outputFileName);
这里我从 inputFilePath
中提取目录名称并将 "EncryptedFiles"
附加到它。然后我创建您的新文件名并将其附加到生成的目录中。
Directory.CreateDirectory()
将创建不存在的目录。