2009-03-03 17 views
60

ファイルの読み書きをしたい。これは機能しません。C#でファイルを読み書きする方法

static void Main(string[] args) 
{ 
    StreamReader sr = new StreamReader(@"C:\words.txt"); 
    StreamWriter sw = new StreamWriter(@"C:\words.txt"); 
} 

C#でファイルを読み書きするにはどうすればよいですか?

答えて

68

読み込みと書き込みの両方に使用できる単一のストリームが必要です。

FileStream fileStream = new FileStream(
     @"c:\words.txt", FileMode.OpenOrCreate, 
     FileAccess.ReadWrite, FileShare.None); 
+10

FileShare.ReadWriteは必須ではなく、他のアプリケーションがあなたのファイルを使用しているときに他のアプリケーションがそのファイルを読み書きできるようになります。一般的にFileShare.Noneはファイルに書き込む際に優先され、作業中に他の人がファイルにアクセスできないようにします。 – ScottS

+0

@ScottS:コンストラクタに共有モードを理解させることができるので、ReadWriteが必要な限り同意します。 – Samuel

+2

最後に ')' – user194743

30
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を使用して、必要なStream/String/Binary Reader/Writersを作成できます。

60

簡単にルートを忘れないでください:このスレッドは、あなたの質問に答えるように思わ

static void Main(string[] args) 
    { 
     var text = File.ReadAllText(@"C:\words.txt"); 
     File.WriteAllText(@"C:\words.txt", text + "DERP"); 
    } 
+13

@Copperpot:質問の要件を確認してください。ロックについては何も言わない。また、ハードドライブのクラッシュや流星のストップについても何も言わない。 – Will

+1

私はこの質問が「同時に」と考えていると思います。 –

+3

@JohnAtwoodあなたは、彼らが仮定について何を言うのか知っています。彼は正解を選んだことは一度もなかったので、私たちは決して知っていることはありません。 – Will

1

を:あなたが必要なもの、基本的にsimultaneous-read-write-a-file

は2 FileStreamを、読み取り操作のための1つ、他を宣言することです書き込み操作のために。 Writer Filestreamはファイルを 'Append'モードで開く必要があります。

関連する問題