【发布时间】:2015-06-12 01:43:09
【问题描述】:
我在将列表写入 txt 文件时遇到问题。如果我运行我的 Save 方法,它只会生成空白的 txt 文件。我从 txt 文件中填写了这个列表,它工作正常,所以我确定它不是空的(我可以在日历中看到我的约会)。有我的方法。
编辑
好的,我知道问题出在哪里。加载中的_appointments 列表与Save 中的_appointments 列表不同。我不知道为什么。我没有其他清单。它是一样的,但它不是:/
public bool Load()
{
DateTime start = new DateTime(2000,01,01);
CultureInfo enUS = new CultureInfo("en-US");
int length = 0;
string screenDiscription = "";
bool occursOnDate = false;
string line;
int i = 1;
StreamReader sr = new StreamReader("appointments.txt");
if (!File.Exists("appointments.txt"))
{
return false;
}
while ((line = sr.ReadLine()) != null)
{
if (i % 4 == 1)
{
start = DateTime.ParseExact(line, "ddMMyyyy HHmm", enUS);
}
if (i % 4 == 2)
{
length = int.Parse(line);
}
if (i % 4 == 3)
{
screenDiscription = line;
}
if (i % 4 == 0)
{
Appointment appointment = new Appointment(start, length, screenDiscription, occursOnDate);
_appointments.Add(appointment);
}
i++;
}
sr.Close();
return true;
}
public bool Save()
{
StreamWriter sw = new StreamWriter("appointments.txt");
if (File.Exists("appointments.txt"))
{
foreach(IAppointment item in _appointments)
{
sw.WriteLine(item.Start);
sw.WriteLine(item.Length);
sw.WriteLine(item.DisplayableDescription);
sw.WriteLine(" ");
}
sw.Close();
return true;
}
else
{
File.Create("appointments.txt");
foreach (IAppointment item in _appointments)
{
sw.WriteLine(item.Start);
sw.WriteLine(item.Length);
sw.WriteLine(item.DisplayableDescription);
sw.WriteLine(" ");
}
sw.Close();
return true;
}
}
【问题讨论】:
-
您是否尝试过创建
TextWriter而不是StreamWriter? -
使用 TextWritier 会让你受益更多。
-
@BradleyWilson 我认为
StreamWriter可以处理字节,不是吗? -
在关闭 StreamWriter 之前尝试使用 sw.Flush()。
-
StreamWriter(string)构造函数的documentation 表示,如果文件不存在,它将创建文件,如果无法创建,则会抛出异常。因此,您无需检查它是否存在或自己创建它。
标签: c#