.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
メソッドを使いませんでした。私はC#が全く初めてです。
正しいコンストラクタ を使用してください。
else if (File.Exists(path))
{
using(var tw = new StreamWriter(path, true))
{
tw.WriteLine("The next line!");
}
}
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();
File.AppendAllTextはファイルに文字列を追加します。ファイルが存在しない場合もテキストファイルを作成します。あなたがコンテンツを読む必要がないなら、それは非常に効率的です。ユースケースはロギングです。
File.AppendAllText("C:\\log.txt", "hello world\n");
ファイルを「追加」モードで開きたいだけです。
else if (File.Exists(path))
{
using (StreamWriter w = File.AppendText(path))
{
w.WriteLine("The next line!");
w.Close();
}
}
StreamWriterを起動すると、以前のテキストが上書きされます。あなたはそのようにappendプロパティを使うことができます:
TextWriter t = new StreamWriter(path, true);
あなたはFileStreamを使用することができます。これですべての作業が完了します。
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!");
}
}
Microsoftのドキュメントから、ファイルが存在しない場合は作成し、それを1回の呼び出しで追加することができます。File.AppendAllTextメソッド(String、String)
.NET Framework(現在のバージョン)その他のバージョン
ファイルを開き、指定された文字列をファイルに追加してからファイルを閉じます。ファイルが存在しない場合、このメソッドはファイルを作成し、指定された文字列をファイルに書き込んでからファイルを閉じます。名前空間:System.IOアセンブリ:mscorlib(mscorlib.dll内)
構文C#C++ F#VB public static void AppendAllText(文字列パス、文字列の内容)パラメータpath型:System.String指定した文字列を追加するファイル。 contents型:System.Stringファイルに追加する文字列。
File.AppendAllText()メソッドを使用するだけで問題を解決できます。このメソッドは、使用できない場合はファイルの作成を処理し、ファイルを開いたり閉じたりします。
var outputPath = @"E:\Example.txt";
var data = "Example Data";
File.AppendAllText(outputPath, data);