这不需要任何实际的问题解决。只是想知道某事的本质。
我注意到如果我连续两次触发此事件,两次都选择相同的文件,即使我从未明确关闭文件,也不会出现任何错误。当ReadLine到达文件末尾时,文件是否自动关闭,或者只要同一个应用程序打开文件就可以尝试打开已经打开的文件?
private void uIDownloadToolStripMenuItem_Click(object sender, EventArgs e)
{
int lineNum = 1;
using (OpenFileDialog dlgOpen = new OpenFileDialog())
try
{
// Default file extension
dlgOpen.DefaultExt = "*.hex";
// SaveFileDialog title
dlgOpen.Title = "Download UI Image";
// Available file extensions
dlgOpen.Filter = "Hex Files (*.hex)|*.hex|All Files (*.*)|*.*";
// Show SaveFileDialog box and save file
if (dlgOpen.ShowDialog() == DialogResult.OK)
{
dlgOpen.OpenFile();
string file = dlgOpen.FileName;
StreamReader reader = new StreamReader(file);
var result = MessageBox.Show("Please confirm the file:" + file, "Confirm", MessageBoxButtons.OKCancel);
if (result == DialogResult.OK)
{
commandConstruct(OP.SETSTATE, DEV.SPI_DEV, "1" , "");
if (ready == true)
{
using (reader)
{
string check;
bool verified = true;
do
{
check = reader.ReadLine();
} while (check != null);
}
}
}
}
}
catch (Exception errorMsg)
{
MessageBox.Show(errorMsg.Message);
}
}
答案 0 :(得分:1)
如果将它捆绑在Using()中,那么你不必担心,如果没有,它不会抛出任何错误,但只是内存块仍然会被占用。所以,如果您认为文件非常大并且您必须对内存管理进行控制,那么最好使用Using()
进行捆绑。答案 1 :(得分:0)
StreamReader
。如果您只打开文件进行阅读,那应该没问题。请参阅link。
using (StreamReader r = new StreamReader("file.txt"))
{
allFileText = r.ReadToEnd();
}
答案 2 :(得分:0)
我发现“使用”会自行关闭它。