C# 在使用 StreamWriter 时得到空的 .txt
Posted
技术标签:
【中文标题】C# 在使用 StreamWriter 时得到空的 .txt【英文标题】:C# getting empty .txt while using StreamWriter 【发布时间】:2013-12-08 00:56:57 【问题描述】:我对 c# system.IO 命名空间的 StreamWriter 方法有疑问。我想将几行数据保存到 .txt 文件中,但我得到的文件总是空的。
我的方法:
public class Statystyki
public void save(string path, Central cent)
StreamWriter stream = new StreamWriter(path);
stream.WriteLine("Something one: "+cent.number1);
stream.WriteLine("Something two: "+cent.number2);
我的主要:
Central newcentral = new Central();
Statystyki stats = new Statystyki();
savepath="c:\projects\central.txt";
statsy.save(savepath, newcentral);
我尝试了很多解决方案,但没有一个奏效。有什么问题?
非常感谢。
【问题讨论】:
你的 FileStream 类在哪里?显示你的完整代码。 【参考方案1】:使用File.WriteAllLines
方法会更容易(在静态类File
中,也在System.IO
中):
File.WriteAllLines(path,
new[] "Something one: "+ cent.number1, "Something two: "+ cent.number2 );
它会为您管理所有可能的错误和处理。
【讨论】:
【参考方案2】:使用它:
stream.AutoFlush = true;
【讨论】:
【参考方案3】:您的字符串变量很可能不正确。在 C# 中,您必须提供双斜杠,除非您使用逐字。这是我写的一个简单的例子。
using (StreamWriter writer = new StreamWriter(@"C:\Users\Brandon\Desktop\text111.txt"))
writer.WriteLine("something 1");
writer.WriteLine("something 2");
writer.Flush();
writer.Dispose();
【讨论】:
【参考方案4】:这是一个完整的程序。100% 工作,但控制台版本。试试这个并根据您的需要修改您的代码。
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
namespace book_StreamWriter
class FileWrite
public void writeData()
using(FileStream fs =
new FileStream(@"D:\myfile2.txt",
FileMode.Append, FileAccess.Write))
StreamWriter sw = new StreamWriter(fs);
Console.WriteLine("Enter a string :");
string str = Console.ReadLine();
sw.Write(str);
sw.Flush();
sw.Close();
class Program
static void Main(string[] args)
FileWrite fw = new FileWrite();
fw.writeData();
Console.ReadLine();
【讨论】:
这里不需要使用FileStream
,因为你已经用using
包装了它,fs.Close()
是多余的。 StreamWriter
实现 IDisposable
并且应该真正包含在自己的 using
语句中。【参考方案5】:
将它包含在using
语句中,以便刷新流并释放对象:
using(StreamWriter stream = new StreamWriter(path))
stream.WriteLine("Something one: "+cent.number1);
stream.WriteLine("Something two: "+cent.number2);
正如user3076560 所指出的,您的字符串可能需要转义。您可以通过以下语句完成此操作:
savepath = @"c:\projects\central.txt";
或
savepath = "c:\\projects\\central.txt";
在主程序中。
【讨论】:
【参考方案6】:在 main() 中,您将 stats
声明为 class Statystyki
的对象。但是,您正在使用statsy
访问您的save()
。因此,我不确定您的代码是否已编译。
另外,添加using
语句。
【讨论】:
以上是关于C# 在使用 StreamWriter 时得到空的 .txt的主要内容,如果未能解决你的问题,请参考以下文章