我已經搜索了互聯網並查看了很多帖子,但沒有人幫助過我。所以我決定在這裏問自己的問題。在讀取/寫入操作期間無法訪問已關閉的文件 - C#
當我點擊窗體上的保存按鈕時,我正在將一些數據寫入二進制文件,並且從窗體打開文件時從文件中讀取數據。數據包括來自某些文本框和兩個列表的文本。我創建了具有下面的代碼保存方法:
BinaryWriter writer = new BinaryWriter(new FileStream(savedFileName, FileMode.Create, FileAccess.Write));
writer.Write(Database.firstName);
writer.Write(Database.middleName);
writer.Write(Database.lastName);
writer.Close();
我要寫它具有以下代碼列表中的其他一般方法:
private void writeDGVrowListToBinaryFile(List<DGVrow> list, BinaryWriter R)
{
Nrows = list.Count;
R.Write(Nrows);
for (int i = 0; i < Nrows; i++)
{
DGVrow dgvr = list[i];
R.Write(dgvr.Day);
R.Write(dgvr.FromTime);
R.Write(dgvr.ToTime);
}
R.Close();
}
因爲我有兩份清單,我添加了這些兩行的保存方法,所述writer.Close()
行之前,改變所述第一碼本:
BinaryWriter writer = new BinaryWriter(new FileStream(savedFileName, FileMode.Create, FileAccess.Write));
writer.Write(Database.firstName);
writer.Write(Database.middleName);
writer.Write(Database.lastName);
writeDGVrowListToBinaryFile(Database.officeHoursList, writer);
writeDGVrowListToBinaryFile(Database.classScheduleList, writer);
writer.CLose();
的問題是,當代碼到達R.Write(Nrows);
它會拋出ObjectDisposedException
並且表示它無法訪問一個已關閉的文件。什麼導致此時文件被關閉?我怎樣才能防止文件關閉?
閱讀時發生同樣的問題,因爲閱讀使用與書寫相同的模式。
因此,你有一個例外,說'該文件已關閉',你甚至不打擾如果你關閉文件搜索? – Steve
@Steve這是我問的問題,我無法理解是什麼導致文件被關閉。現在我已經明白了。 –