问题描述
当我输入要保存的文件名时,它给我一个错误:进程无法访问文件(目录+fileout的名称)因为它正在被另一个进程使用.为什么?怎么解决?
When I enter the name of the file to be saved, it gives me an error: the process cannot access the files (directory+name of fileout) Because it is being used by another process. Why? How can I solve?
private void button_Click_C_Open(object sender, EventArgs e)
{
Stream myStream = null;
OpenFileDialog openFileDialog1 = new OpenFileDialog();
//openFileDialog1.InitialDirectory = "c:\\";
openFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
openFileDialog1.FilterIndex = 2;
openFileDialog1.RestoreDirectory = true;
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
try
{
if ((myStream = openFileDialog1.OpenFile()) != null)
{
using (myStream)
{
filein = openFileDialog1.FileName; //file in lo scegliamo dal openfiledialog
textFileScelto.Text = filein; //visualizza la scelta in una textbox
}
}
}
catch (Exception ex)
{
MessageBox.Show("Error: Could not read file from disk. Original error: " + ex.Message);
}
}
}
private void Encypt_File_Click(object sender, EventArgs e)
{
try
{
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;
passwordBytes = GetPasswordBytes();
AES.EncryptFile(filein, fileout, passwordBytes);
MessageBox.Show("File Criptato!");
my1Stream.Close();
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
对于任何语法错误,我深表歉意.我希望我能理解您的回答.提前致谢.
I apologize for any grammatical mistakes.I hope I understand well your answers. Thanks in advance.
推荐答案
由于 OpenFile() 方法,您自己的应用程序持有对文件的锁定.尝试将 my1Stream.Close();
放在 AES.EncryptFile(filein, fileout, passwordBytes);
之前.
Your own application holds a lock to the file because of the OpenFile() method.Try to put my1Stream.Close();
before AES.EncryptFile(filein, fileout, passwordBytes);
.
实际上不需要使用流.
这应该可以解决问题
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
fileout = saveFileDialog1.FileName;
passwordBytes = GetPasswordBytes();
AES.EncryptFile(filein, fileout, passwordBytes);
MessageBox.Show("File Criptato!");
}
这篇关于[OpenFileDialog-saveFileDialog 错误]进程无法访问文件,因为它正被另一个进程使用.的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!