我对此代码的目标是使用foreach循环遍历每个对象并将当前字符串值写入txt文件。
我正在使用“Woof”和“Bull”作为测试。 Bull是我的AverageValues类中的字符串变量。
不幸的是,它目前不会将bull的值写入文件,但是,它会创建该文件。
我认为这很容易解决,我现在似乎无法找到它。
所有帮助将不胜感激!
public void doStuff()
{
AverageValues AVS = new AverageValues();
AVS.Bull = "Woof";
string path = "C:\\users\\kjenks11\\Averages.txt";
FileStream NewFile = File.Create(path);
StreamWriter writeIt = new StreamWriter(NewFile);
List<AverageValues> AV = new List<AverageValues>();
AV.Add(AVS);
foreach (var value in AV)
{
writeIt.Write(value.Bull);
}
NewFile.Close();
}
答案 0 :(得分:3)
Flush或在关闭文件之前关闭流:
foreach (var value in AV)
{
writeIt.WriteLine(value.Bull);
}
writeIt.Flush();
writeIt.Close();
关于样式的注意事项 - 在创建Stream
(任何类型)时,或者更确切地说,任何实现IDisposable
的对象时,使用using
statement创建它:
using(var writeIt = new StreamWriter(NewFile))
{
// use writeIt here - it will dispose properly
}
答案 1 :(得分:3)
您需要刷新才能将数据写入文件。您也可以考虑向编写者添加using语句,以便在完成后释放资源。
public void doStuff()
{
AverageValues AVS = new AverageValues();
AVS.Bull = "Woof";
string path = "C:\\users\\kjenks11\\Averages.txt";
using (var NewFile = File.Create(path))
{
using (var writeIt = new StreamWriter(NewFile))
{
List<AverageValues> AV = new List<AverageValues> {AVS};
foreach (var value in AV)
{
writeIt.Write(value.Bull);
}
}
}
}
答案 2 :(得分:2)
如果您在流中使用using
,则无需显式调用flush和close。一旦离开using
块'范围,流将被关闭并处理掉。收盘将为您打电话。
public void doStuff()
{
AverageValues AVS = new AverageValues();
AVS.Bull = "Woof";
string path = "C:\\users\\kjenks11\\Averages.txt";
FileStream NewFile = File.Create(path);
List<AverageValues> AV = new List<AverageValues>();
AV.Add(AVS);
using(StreamWriter writeIt = new StreamWriter(NewFile))
{
foreach (var value in AV)
{
writeIt.Write(value.Bull);
}
}
NewFile.Close();
}