第一次打开文件,读取内容并保存时,应用程序运行良好。但是当我再次打开同一个文件时,我得到一个文件未找到的异常。如何刷新流?
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
答案 0 :(得分:4)
你可以试试这个:
using (FileStream usrFs = new FileStream(xmlSource, FileMode.Open,
FileAccess.Read, FileShare.ReadWrite)
{
...
}
答案 1 :(得分:0)
阅读完文件后,当您完成阅读或写作后,close
filestream
...
finally
{
fileStream.Close();
}
IOEXCEPTIONS
将是不同类型的,您只是显示未找到文件的消息。在您的情况下,例外不将找不到文件...它将是file already open by another process
。
答案 2 :(得分:0)
你得到的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.