Bxc*_*dsb 4 c# filestream streamwriter
我正在用SteamWriter文字文件写东西,但用新数据覆盖旧数据.如何确保它只是添加新数据而不是覆盖旧数据?
我的代码:
class Program
{
const string filename = @"C:\log.txt";
static void Main()
{
FileStream fs;
fs = new FileStream(filename, FileMode.Create, FileAccess.Write);
StreamWriter writer = new StreamWriter(fs);
writer.WriteLine("test");
writer.Close();
fs.Close();
}
}
Run Code Online (Sandbox Code Playgroud)
Alv*_*ong 12
如果您使用FileMode.Create,根据MSDN:
指定操作系统应创建新文件.如果该文件已存在,则将被覆盖.这需要FileIOPermissionAccess.Write权限.FileMode.Create等同于请求如果文件不存在,则使用CreateNew; 否则,请使用截断.如果文件已存在但是是隐藏文件,则抛出UnauthorizedAccessException异常.
因此FileMode.Append,如果要将内容添加到文件末尾,则需要使用:
打开文件(如果存在)并搜索文件的末尾,或 创建新文件.这需要FileIOPermissionAccess.Append权限.FileMode.Append只能与FileAccess.Write一起使用.尝试在文件结束之前寻找某个位置会抛出IOException异常,并且任何读取尝试都会失败并抛出NotSupportedException异常.
FileStream fs = new FileStream(filename, FileMode.Append, FileAccess.Write);
Run Code Online (Sandbox Code Playgroud)
尝试这个
string path = your file path;
using(StreamWriter sw = new StreamWriter(path,true))
{
sw.WriteLine("string here");
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18519 次 |
| 最近记录: |