当我第一次打开一个文件,读取其内容并保存它时,应用程序运行良好。但当我再次打开同一个文件时,我会得到一个文件未找到异常。如何刷新流?
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:Users273714DesktopCRAFTLite - VSTSSampleApplicationMainForm.cs:line 179
你可以试试这个:
using (FileStream usrFs = new FileStream(xmlSource, FileMode.Open,
FileAccess.Read, FileShare.ReadWrite)
{
...
}
您得到的IOException
可能是由许多问题引起的。如果要检查未找到的文件,则应检查System.IO.FileNotFoundException
。如果没有任何额外的信息,很难准确地说出问题的原因。
一个问题是当前您没有关闭文件流。您需要在finally方法中调用usrFs.Close()
。或者更好的是,使用using关键字来确保文件已关闭。
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
。