在Windows C#中找不到文件exception

当我打开一个文件,读取它的内容并保存它时,该应用程序第一次运行良好。 但是,当我再次打开同一个文件,我得到一个文件未find的exception 。 如何刷新stream?

FileStream usrFs = null; try { usrFs = new FileStream(xmlSource, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); } catch (IOException) { MessageBox.Show("File not found in the specified path"); } 

XML

 <?xml version="1.0"?> <MenuItem BasePath="c:\SampleApplication"> 

堆栈跟踪

 at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath) at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share) at SampleApplication.MainForm.ProcessDocument(BackgroundWorker worker, DoWorkEventArgs e) in C:\Users\273714\Desktop\CRAFTLite - VSTS\SampleApplication\MainForm.cs:line 179 

你可以试试这个:

  using (FileStream usrFs = new FileStream(xmlSource, FileMode.Open, FileAccess.Read, FileShare.ReadWrite) { ... } 

你会得到一个IOException ,这可能是由许多问题引起的。 如果你想检查文件没有找到你应该检查System.IO.FileNotFoundException 。 没有任何额外的信息,很难确切地说明是什么导致了这个问题。

一个问题是,目前你没有关闭文件流。 你需要在finally方法中调用usrFs.Close() 。 或者更好的是,使用关键字来确保文件关闭。

 using( var usrFs = new FileStream(xmlSource, FileMode.Open, FileAccess.Read, FileShare.ReadWrite) ) { // do things here } // usrFs is closed here, regardless of any exceptions. 

读完文件后,读完或写完后, close filestream

 finally { fileStream.Close(); } 

IOEXCEPTIONS将是不同的类型,你只是显示消息,找不到文件。 在你的情况下,异常将不会被找到文件…它将file already open by another process