创建一个. txt 文件(如果不存在) ,并且如果它附加了一个新行

我想创建一个。Txt 文件并写入它,如果该文件已经存在,我只想再附加一些行:

string path = @"E:\AppServ\Example.txt";
if (!File.Exists(path))
{
File.Create(path);
TextWriter tw = new StreamWriter(path);
tw.WriteLine("The very first line!");
tw.Close();
}
else if (File.Exists(path))
{
TextWriter tw = new StreamWriter(path);
tw.WriteLine("The next line!");
tw.Close();
}

但是第一行似乎总是被覆盖... 我怎样才能避免在同一行上写(我在循环中使用它) ?

我知道这是一个非常简单的事情,但是我以前从来没有使用过 WriteLine方法。

497462 次浏览

使用 正确的构造函数:

else if (File.Exists(path))
{
using(var sw = new StreamWriter(path, true))
{
sw.WriteLine("The next line!");
}
}

您只需要以“ append”模式打开文件。

Http://msdn.microsoft.com/en-us/library/3zc0w663.aspx

您可以使用 FileStream,它可以为您完成所有工作。

Http://www.csharp-examples.net/filestream-open-file/

当你启动 StreamWriter 时,它会覆盖之前的文本。你可以像这样使用 append 属性:

TextWriter t = new StreamWriter(path, true);
 else if (File.Exists(path))
{
using (StreamWriter w = File.AppendText(path))
{
w.WriteLine("The next line!");
w.Close();
}
}
string path = @"E:\AppServ\Example.txt";
File.AppendAllLines(path, new [] { "The very first line!" });

另请参阅 File.AppendAllText () . AppendAllLines 将向每一行添加一个新行,而不必自己将其放在那里。

如果文件不存在,这两种方法都会创建文件,所以您不必这样做。

string path=@"E:\AppServ\Example.txt";


if(!File.Exists(path))
{
File.Create(path).Dispose();


using( TextWriter tw = new StreamWriter(path))
{
tw.WriteLine("The very first line!");
}


}
else if (File.Exists(path))
{
using(TextWriter tw = new StreamWriter(path))
{
tw.WriteLine("The next line!");
}
}

您实际上不必检查该文件是否存在,因为 StreamWriter 将为您执行此操作。如果您在追加模式下打开它,如果文件不存在,那么将创建它,那么您将始终追加而且永远不会重写。所以你最初的检查是多余的。

TextWriter tw = new StreamWriter(path, true);
tw.WriteLine("The next line!");
tw.Close();

在 Microsoft 文档中,如果不存在文件,可以创建文件并在单个调用中将其追加到文件中 File.AppendAllText 方法(String,String)

.NETFramework (当前版本)其他版本

打开一个文件,将指定的字符串追加到该文件,然后关闭该文件。如果该文件不存在,则此方法创建一个文件,将指定的字符串写入该文件,然后关闭该文件。 命名空间: System.IO Assembly: mscolib (in mscolib.dll)

语法 C # C + + F # VB Public static void AppendAllText ( 字符串路径, 字符串内容 ) 参数 路径 类型: System.String 要将指定字符串追加到的文件。 内容 类型: System.String 要追加到文件的字符串。

AppendAllText

档案。AppendAllText 向文件添加字符串。如果文件不存在,它还会创建一个文本文件。如果你不需要阅读内容,这是非常有效的。用例是日志记录。

File.AppendAllText("C:\\log.txt", "hello world\n");
using(var tw = new StreamWriter(path, File.Exists(path)))
{
tw.WriteLine(message);
}

试试这个。

string path = @"E:\AppServ\Example.txt";
if (!File.Exists(path))
{
using (var txtFile = File.AppendText(path))
{
txtFile.WriteLine("The very first line!");
}
}
else if (File.Exists(path))
{
using (var txtFile = File.AppendText(path))
{
txtFile.WriteLine("The next line!");
}
}

只需使用 File.AppendAllText ()方法即可解决问题。 如果文件不可用,此方法将负责文件创建,打开和关闭文件。

var outputPath = @"E:\Example.txt";
var data = "Example Data";
File.AppendAllText(outputPath, data);

.NET 核心控制台应用程序:

public static string RootDir() => Path.GetFullPath(Path.Combine(AppContext.BaseDirectory, @"..\..\..\"));




string _OutputPath = RootDir() + "\\Output\\" + "MyFile.txt";
if (!File.Exists(_OutputPath))
File.Create(_OutputPath).Dispose();
using (TextWriter _StreamWriter = new StreamWriter(_OutputPath))
{
_StreamWriter.WriteLine(strOriginalText);
}




      

请注意,AppendAllLines 和 AppendAllText 方法只创建文件,而不创建路径。因此,如果您试图在“ C: 文件夹”中创建一个文件,请确保该路径存在。