在写作之前删除所有以前的文本
Posted
技术标签:
【中文标题】在写作之前删除所有以前的文本【英文标题】:Remove all previous text before writing 【发布时间】:2012-12-13 20:02:10 【问题描述】:我正在写一个文本文件,每次我写我都想清除文本文件。
try
string fileName = "Profile//" + comboboxSelectProfile.SelectedItem.ToString() + ".txt";
using (StreamWriter sw = new StreamWriter(("Default//DefaultProfile.txt").ToString(), true))
sw.WriteLine(fileName);
MessageBox.Show("Default is set!");
DefaultFileName = "Default//DefaultProfile.txt";
catch
我该怎么做?我想从 DefaultProfile.txt 中删除所有以前的内容。
我实际上必须知道从文本文件中删除所有内容的方法或方式(可能只是一个名称)。
【问题讨论】:
获取数据、删除文件并创建新文件是一种简单的方法。有没有更好的办法? 我认为这是一个更简单的[解决方案][1] [1]:***.com/a/24933010/2374691 【参考方案1】:您可以将一个空字符串写入现有文件:
File.WriteAllText(@"Default\DefaultProfile.txt", string.Empty);
或者将StreamWriter
构造函数中的第二个参数改为false
,以替换文件内容,而不是追加到文件中。
【讨论】:
【参考方案2】:System.IO.File.Delete
,或指定FileMode.Create
的System.IO.FileStream
构造函数重载之一
【讨论】:
【参考方案3】:你可以看看Truncate方法
FileInfo fi = new FileInfo(@"Default\DefaultProfile.txt");
using(TextWriter txtWriter = new StreamWriter(fi.Open(FileMode.Truncate)))
txtWriter.Write("Write your line or content here");
【讨论】:
【参考方案4】:最直接有效的技术是使用 StreamWriter 构造函数的布尔参数。当它设置为 false 时,它会用当前操作覆盖文件。例如,我必须将数学运算的输出保存到文本文件中。每次我只想要文本文件中的当前答案。因此,在第一个 StreamWriter 操作中,我将布尔值设置为 false,随后的调用将 bool val 设置为 true。结果是每次新操作都会覆盖之前的答案,只显示新的答案。
int div = num1 / denominator;
int mod = num1 % denominator;
Console.Write(div);
using (StreamWriter writer = new StreamWriter(FILE_NAME, false ))
writer.Write(div);
Console.Write(".");
using (StreamWriter writer = new StreamWriter(FILE_NAME, true))
writer.Write(".");
【讨论】:
【参考方案5】:您可以使用FileMode.Truncate
。代码看起来像
FileStream fs = new
FileStream(filePath, FileMode.Truncate, FileAccess.Write )
fs.Close();
【讨论】:
【参考方案6】:只需将StreamWriter
的构造函数中的第二个参数从true
更改为false
即可。
using (StreamWriter sw = new StreamWriter(("Default//DefaultProfile.txt").ToString(), **false**))
见StreamWriter Contructor
【讨论】:
以上是关于在写作之前删除所有以前的文本的主要内容,如果未能解决你的问题,请参考以下文章