Way*_*int 162 c# streamwriter
我想在我的文件中附加行.我正在使用StreamWriter:
StreamWriter file2 = new StreamWriter(@"c:\file.txt");
file2.WriteLine(someString);
file2.Close();
Run Code Online (Sandbox Code Playgroud)
我的文件输出应该是几个字符串彼此相同,但我只有一行,每次运行此代码时都会被覆盖.
有没有办法让StreamWriter附加到现有文件?
Øyv*_*hen 267
请改用:
new StreamWriter("c:\\file.txt", true);
Run Code Online (Sandbox Code Playgroud)
使用StreamWriter构造函数的这个重载,您可以选择是附加文件还是覆盖它.
C#4及更高版本提供了以下语法,其中一些更易读:
new StreamWriter("c:\\file.txt", append: true);
Run Code Online (Sandbox Code Playgroud)
And*_*nov 142
using (FileStream fs = new FileStream(fileName,FileMode.Append, FileAccess.Write))
using (StreamWriter sw = new StreamWriter(fs))
{
sw.WriteLine(something);
}
Run Code Online (Sandbox Code Playgroud)
Jon*_*Jon 12
我假设您每次向文件写入内容时都在执行上述所有代码.每次打开文件的流时,其搜索指针都位于开头,因此所有写入最终都会覆盖之前的内容.
您可以通过两种方式解决问题:方便
file2 = new StreamWriter("c:/file.txt", true);
Run Code Online (Sandbox Code Playgroud)
或者通过自己显式重新定位流指针:
file2 = new StreamWriter("c:/file.txt");
file2.BaseStream.Seek(0, SeekOrigin.End);
Run Code Online (Sandbox Code Playgroud)
Mar*_*rco 10
试试这个:
StreamWriter file2 = new StreamWriter(@"c:\file.txt", true);
file2.WriteLine(someString);
file2.Close();
Run Code Online (Sandbox Code Playgroud)
替换这个:
StreamWriter file2 = new StreamWriter("c:/file.txt");
Run Code Online (Sandbox Code Playgroud)
有了这个:
StreamWriter file2 = new StreamWriter("c:/file.txt", true);
Run Code Online (Sandbox Code Playgroud)
true
表示它附加文本.
另一个选择是使用System.IO.File.AppendText
这相当于其他人给出的StreamWriter重载.
此外File.AppendAllText可以给出一个稍微容易的界面,而无需担心开闭流.虽然您可能需要担心放入自己的换行符.:)
小智 5
实际上,只有Jon对BaseStream.Seek的回答(11年5月11日9:37)适用于我的情况。谢谢乔恩!我需要将行附加到zip存档的txt文件中。
using (FileStream zipFS = new FileStream(@"c:\Temp\SFImport\test.zip",FileMode.OpenOrCreate))
{
using (ZipArchive arch = new ZipArchive(zipFS,ZipArchiveMode.Update))
{
ZipArchiveEntry entry = arch.GetEntry("testfile.txt");
if (entry == null)
{
entry = arch.CreateEntry("testfile.txt");
}
using (StreamWriter sw = new StreamWriter(entry.Open()))
{
sw.BaseStream.Seek(0,SeekOrigin.End);
sw.WriteLine("text content");
}
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
363607 次 |
最近记录: |