C# saveFileDialog生成2个文件而不是1个文件?
我不明白为什么这会生成两个文件而不是一个: 具有相同的名称,但其中一个(可以)具有正确的扩展名(C# saveFileDialog生成2个文件而不是1个文件?,c#,savefiledialog,C#,Savefiledialog,我不明白为什么这会生成两个文件而不是一个: 具有相同的名称,但其中一个(可以)具有正确的扩展名(扩展名),为xxxxBytes,而另一个没有扩展名(文件类型为),为0Bytes Stream my1Stream; SaveFileDialog saveFileDialog1 = new SaveFileDialog(); saveFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*"; saveFileDialog1
扩展名
),为xxxxBytes,而另一个没有扩展名(文件类型为),为0Bytes
Stream my1Stream;
SaveFileDialog saveFileDialog1 = new SaveFileDialog();
saveFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
saveFileDialog1.FilterIndex = 2;
saveFileDialog1.RestoreDirectory = true;
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
if ((my1Stream = saveFileDialog1.OpenFile()) != null)
{
fileout = saveFileDialog1.FileName + extension;
passwordBytes = GetPasswordBytes();
my1Stream.Close();
AES.EncryptFile(filein, fileout, passwordBytes);
MessageBox.Show("File Criptato!");
}
}
扩展名派生自filein
(在OpenFileDialog中),并以以下形式声明:private string extension
:
filein = openFileDialog1.FileName;
extension = Path.GetExtension(filein);
造成您困惑的主要原因是启用了资源管理器选项“隐藏已知文件类型的扩展名”。如果您正在处理文件,请立即禁用该选项 此外,
my1Stream=saveFileDialog1.OpenFile()
实际上创建了该文件,但您从未写入my1Stream
。这将创建第一个具有正确扩展名的0字节文件
然后输入以下代码:
fileout = saveFileDialog1.FileName + extension;
AES.EncryptFile(filein, fileout, passwordBytes);
写入具有双扩展名的第二个文件
如果您的AES库(或从中复制的AES.EncryptFile()
)不支持写入流,只需删除If((my1Stream=saveFileDialog1.OpenFile())!=null)
和扩展名。SaveFileDialog.FileName
包含扩展名:
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
fileout = saveFileDialog1.FileName;
passwordBytes = GetPasswordBytes();
AES.EncryptFile(filein, fileout, passwordBytes);
MessageBox.Show("File Criptato!");
}
造成您困惑的主要原因是启用了资源管理器选项“隐藏已知文件类型的扩展名”。如果您正在处理文件,请立即禁用该选项 此外,
my1Stream=saveFileDialog1.OpenFile()
实际上创建了该文件,但您从未写入my1Stream
。这将创建第一个具有正确扩展名的0字节文件
然后输入以下代码:
fileout = saveFileDialog1.FileName + extension;
AES.EncryptFile(filein, fileout, passwordBytes);
写入具有双扩展名的第二个文件
如果您的AES库(或从中复制的AES.EncryptFile()
)不支持写入流,只需删除If((my1Stream=saveFileDialog1.OpenFile())!=null)
和扩展名。SaveFileDialog.FileName
包含扩展名:
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
fileout = saveFileDialog1.FileName;
passwordBytes = GetPasswordBytes();
AES.EncryptFile(filein, fileout, passwordBytes);
MessageBox.Show("File Criptato!");
}
从SaveFileDialog.OpenFile方法上的MSDN页面 出于安全目的,此方法使用 选择名称并以读/写权限打开它。这可能导致 如果选择要保存到的现有文件,则会意外丢失数据 所以这条线
if ((my1Stream = saveFileDialog1.OpenFile()) != null)
创建一个名称为选定且字节数为零的文件。然后,您的代码继续在AES.Encryptfile调用中创建文件,名称为fileOut
你可以简单地写
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
fileout = saveFileDialog1.FileName;
passwordBytes = GetPasswordBytes();
AES.EncryptFile(filein, fileout, passwordBytes);
MessageBox.Show("File Criptato!");
}
从SaveFileDialog.OpenFile方法上的MSDN页面 出于安全目的,此方法使用 选择名称并以读/写权限打开它。这可能导致 如果选择要保存到的现有文件,则会意外丢失数据 所以这条线
if ((my1Stream = saveFileDialog1.OpenFile()) != null)
创建一个名称为选定且字节数为零的文件。然后,您的代码继续在AES.Encryptfile调用中创建文件,名称为fileOut
你可以简单地写
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
fileout = saveFileDialog1.FileName;
passwordBytes = GetPasswordBytes();
AES.EncryptFile(filein, fileout, passwordBytes);
MessageBox.Show("File Criptato!");
}