我有一个大约 5,000 行的文本文件,我想将其内容复制到另一个文件,但只复制每行的前 38 个字符。
我目前有这段代码:
private void button1_Click(object sender, EventArgs e)
{
string line, line2;
System.IO.StreamReader file = new System.IO.StreamReader(@"c:\test.txt");
while ((line = file.ReadLine()) != null)
{
line2 = line.Substring(0, 38);
using (System.IO.StreamWriter files = new System.IO.StreamWriter(@"C:\test2.txt"))
{
files.WriteLine(line2);
}
}
file.Close();
}
它只复制最后一行。 :(
最佳答案
因为您在循环中重写了新文件。你应该在循环中创建你的新字符串(使用 stringBuilder 会更有效),但是在循环之外写新文件:
string line;
var sb = new StringBuilder();
System.IO.StreamReader file = new System.IO.StreamReader(@"c:\test.txt");
while ((line = file.ReadLine()) != null)
sb.AppendLine(line.Substring(0, Math.Min(38, line.Length)));
file.Close();
using (System.IO.StreamWriter files = new System.IO.StreamWriter(@"C:\test2.txt"))
{
files.WriteLine(sb.ToString());
}
或者缩短
var result = File.ReadAllLines(@"c:\test.txt")
.Select(m => m.Substring(0, Math.Min(38, m.Length)));
File.WriteAllLines(@"C:\test2.txt", result);
关于c# - 如何将一个文本文件的内容以更短的长度复制到另一个文本文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18668093/