ファイルの読み取りと書き込みの両方を行いたい。これは機能しません。
static void Main(string[] args)
{
StreamReader sr = new StreamReader(@"C:\words.txt");
StreamWriter sw = new StreamWriter(@"C:\words.txt");
}
C#でファイルの読み取りと書き込みの両方を行うにはどうすればよいですか?
ファイルの読み取りと書き込みの両方を行いたい。これは機能しません。
static void Main(string[] args)
{
StreamReader sr = new StreamReader(@"C:\words.txt");
StreamWriter sw = new StreamWriter(@"C:\words.txt");
}
C#でファイルの読み取りと書き込みの両方を行うにはどうすればよいですか?
読み取りと書き込みの両方のために開かれた単一のストリームが必要です。
FileStream fileStream = new FileStream(
@"c:\words.txt", FileMode.OpenOrCreate,
FileAccess.ReadWrite, FileShare.None);
簡単なルートを忘れないでください:
static void Main(string[] args)
{
var text = File.ReadAllText(@"C:\words.txt");
File.WriteAllText(@"C:\words.txt", text + "DERP");
}
var fs = File.Open("file.name", FileMode.OpenOrCreate, FileAccess.ReadWrite);
var sw = new StreamWriter(fs);
var sr = new StreamReader(fs);
...
fs.Close();
//or sw.Close();
重要なことは、FileAccess.ReadWrite フラグを付けてファイルを開くことです。その後、最初の FileStream を使用して、必要なストリーム/文字列/バイナリ リーダー/ライターを作成できます。
このスレッドはあなたの質問に答えるようです:同時読み取り書き込みファイル
基本的に必要なのは、2 つの FileStream を宣言することです。1 つは読み取り操作用、もう 1 つは書き込み操作用です。Writer Filestream は、「追加」モードでファイルを開く必要があります。
@Ipsita によって改善コードが作成されました -非同期の読み取り/書き込みファイル I/Oを使用するため
readonly string logPath = @"FilePath";
...
public async Task WriteToLogAsync(string dataToWrite)
{
TextReader tr = new StreamReader(logPath);
string data = await tr.ReadLineAsync();
tr.Close();
TextWriter tw = new StreamWriter(logPath);
await tw.WriteLineAsync(data + dataToWrite);
tw.Close();
}
...
await WriteToLogAsync("Write this to file");