当我打开一个文件,读取它的内容并保存它时,该应用程序第一次运行良好。 但是,当我再次打开同一个文件,我得到一个文件未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 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
。