.OpenFile() 一个已经打开的文件可以吗?

Is it ok to .OpenFile() a file that is already Open?

这不需要解决任何实际问题。只是想知道事物的本质。

我注意到,如果我连续两次触发此事件,两次都选择相同的文件,即使我从未明确关闭该文件,我也不会收到任何类型的错误。当 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);
                }
        }

StreamReader 应在读取文件后关闭。如果您打开文件只是为了阅读,应该没问题。参考link

using (StreamReader r = new StreamReader("file.txt"))
{
  allFileText = r.ReadToEnd();
}

我发现 "using" 会自行关闭。

如果你把它捆绑在 Using() 里面那么你不用担心,如果没有,它不会抛出任何错误,只是内存块仍然会被占用。因此,如果您认为文件非常大并且必须控制内存管理,那么最好使用 Using()

进行捆绑