我需要创建100个文件,每个文件只包含1到100之间的数字 我是这样的代码:
for (int i = 1; i <= 100; i++)
{
TextWriter tw = new StreamWriter(i.ToString(), true);
tw.WriteLine(i.ToString());
tw.Close();
}
它的工作但文件大于预期(3个字节)。我创建了一个包含数字1(数字)的文件(手动),并将其与另一个文件进行比较(哈希)......它们不一样! 但它们包含相等的字符串,在这种情况下&#34; 1&#34;。
答案 0 :(得分:8)
我敢打赌,WriteLine正在添加一个cr / lf的回车符。这将是两个额外的字节。如果使用Write,问题会消失吗?
答案 1 :(得分:1)
使用File.WriteAllText方法,在这种情况下更容易,并且可以更好地清理自己正在进行的操作。此外,明确使用ASCII编码 - 否则您可能最终会得到一个UTF BOM前缀 - 这似乎是您不想要的。
for (int i = 0; i < 100; i++)
{
string istr = i.ToString();
System.IO.File.WriteAllText(istr, istr + ".txt", System.Text.Encoding.ASCII);
}
答案 2 :(得分:0)
您应该尝试BinaryWeiter。
for (int i = 0; i < 100; i++)
{
using(MemoryStream ms = new MemoryStream())
{
BinaryWriter w = new BinaryWriter(ms);
w.Write(i.ToString());
}
}
这会将长度为前缀的字符串写入流中。如果要将其保存到磁盘,可以使用FileStream。