ファイルが存在しない場合は、コードを読み取ってから追加または追加する必要があります。現時点では、作成および追加が存在する場合は読み取り中です。コードは次のとおりです。
if (File.Exists(path))
{
using (StreamWriter sw = File.CreateText(path))
{
これをしますか?
if (! File.Exists(path))
{
using (StreamWriter sw = File.CreateText(path))
{
編集:
string path = txtFilePath.Text;
if (!File.Exists(path))
{
using (StreamWriter sw = File.CreateText(path))
{
foreach (var line in employeeList.Items)
{
sw.WriteLine(((Employee)line).FirstName);
sw.WriteLine(((Employee)line).LastName);
sw.WriteLine(((Employee)line).JobTitle);
}
}
}
else
{
StreamWriter sw = File.AppendText(path);
foreach (var line in employeeList.Items)
{
sw.WriteLine(((Employee)line).FirstName);
sw.WriteLine(((Employee)line).LastName);
sw.WriteLine(((Employee)line).JobTitle);
}
sw.Close();
}
}
あなたは単に呼び出すことができます
using (StreamWriter w = File.AppendText("log.txt"))
ファイルが存在しない場合は作成し、追加するためにファイルを開きます。
編集:
これで十分です。
string path = txtFilePath.Text;
using(StreamWriter sw = File.AppendText(path))
{
foreach (var line in employeeList.Items)
{
Employee e = (Employee)line; // unbox once
sw.WriteLine(e.FirstName);
sw.WriteLine(e.LastName);
sw.WriteLine(e.JobTitle);
}
}
しかし、最初にチェックすることを主張するなら、あなたはこのような何かをすることができます、しかし、私はポイントを見ません。
string path = txtFilePath.Text;
using (StreamWriter sw = (File.Exists(path)) ? File.AppendText(path) : File.CreateText(path))
{
foreach (var line in employeeList.Items)
{
sw.WriteLine(((Employee)line).FirstName);
sw.WriteLine(((Employee)line).LastName);
sw.WriteLine(((Employee)line).JobTitle);
}
}
また、コードで指摘することの1つは、多くの不要なボックス化解除を行っていることです。 ArrayList
のようなプレーン(非ジェネリック)コレクションを使用する必要がある場合は、オブジェクトを一度アンボックス化して、参照を使用します。
ただし、コレクションにはList<>
を使用することをお勧めします。
public class EmployeeList : List<Employee>
または:
using(var fileStream = File.Open(path, FileMode.OpenOrCreate, FileAccess.ReadWrite))
{
using (StreamWriter sw = new StreamWriter(path, true))
{
//...
}
}
手動でチェックする必要さえありません。File.Openが自動的にチェックします。試してください:
using (StreamWriter sw = new StreamWriter(File.Open(path, System.IO.FileMode.Append)))
{
参照: http://msdn.Microsoft.com/en-us/library/system.io.filemode.aspx
はい、ファイルdoes n'tが存在するかどうかを確認する場合は、File.Exists(path)
を無効にする必要があります。
例えば
string rootPath = Path.GetPathRoot(Environment.GetFolderPath(Environment.SpecialFolder.System));
rootPath += "MTN";
if (!(File.Exists(rootPath)))
{
File.CreateText(rootPath);
}