System.IO.IOException问题,请教高手

jane35_2009 2010-09-07 05:08:44
要实现的功能:点击一个按钮的click事件,弹出一个“打开文件对话框”,选择好文件之后,显示再显示一个保存文件对话框。每次运行到下列程序的最后那行就会出错,出错信息如下:
未处理的“System.IO.IOException”类型的异常出现在 mscorlib.dll 中。

其他信息: The process cannot access the file 'F:\Backup\My Documents\5252.hex' because it is being used by another process.
望高手指点!非常感谢!

FileStream ^fStream;
StreamReader ^sReader;
Stream ^myStream;

OpenFileDialog^ openFileDialog1 = gcnew OpenFileDialog;

//Set the parameters for the open file dialog box
openFileDialog1->Filter = "TXT files (*.txt)|*.txt|All files (*.*)|*.*";
openFileDialog1->FilterIndex = 1;
openFileDialog1->RestoreDirectory = true;

//Open the dialog
openFileDialog1->ShowDialog();

//if they pressed OK and a file was selected
myStream = openFileDialog1->OpenFile();

//Try to open the file to read
fStream = gcnew FileStream(openFileDialog1->FileName, FileMode::Create, FileAccess::Write,FileShare::None);

sReader = gcnew StreamReader(fStream);
FileStream ^fStream2;
StreamWriter^ sWriter;
Stream^ myStream2;


SaveFileDialog^ saveFileDialog1 = gcnew SaveFileDialog;


saveFileDialog1->Filter = "Hex files (*.hex)|*.hex|All files (*.*)|*.*";
saveFileDialog1->FilterIndex = 1;

saveFileDialog1->AddExtension = "hex";


saveFileDialog1->ShowDialog() ;
myStream2 = saveFileDialog1->OpenFile();

//Try to open the file to write
fStream2 = gcnew FileStream(saveFileDialog1->FileName,FileMode::Create, FileAccess::ReadWrite,FileShare::ReadWrite);
...全文
1769 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
u010176611 2013-04-05
  • 打赏
  • 举报
回复
好 !!!!!!!!
jane35_2009 2010-09-08
  • 打赏
  • 举报
回复
感谢大家的回答。
问题已经解决。
错误出在下面两句话:
myStream = openFileDialog1->OpenFile();
fStream = gcnew FileStream(openFileDialog1->FileName, FileMode::Create, FileAccess::Write,FileShare::None);
第一句话已经打开了一个文件,第二句话还打算创建这个文件,当然会出错了。
这个问题让我搞了好几天!不过还是学到了东西。
再次谢谢各位。
向立天 2010-09-07
  • 打赏
  • 举报
回复
你用的是CLI
jane35_2009 2010-09-07
  • 打赏
  • 举报
回复
我用了try,catch的
我这里给出的代码,是简化过的。
我在一个临时文件里测试了一下,fStream2 = gcnew FileStream(path,FileMode::Create, FileAccess::ReadWrite,FileShare::ReadWrite);
这个函数的用法是对的,但是,把saveFileDialog1->FileName作为参数放进去就不对了。唉郁闷
高手继续指点啊!
  • 打赏
  • 举报
回复
The process cannot access the file 'F:\Backup\My Documents\5252.hex' because it is being used by another proces
这不是很明显了么
你需要用try catch 来捕获这个异常
healer_kx 2010-09-07
  • 打赏
  • 举报
回复
好,不会。

64,687

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧