2016-10-01 5 views
0

私testerfileは含まれていますC#で新しいファイルにファイルから読み込んだ文字列配列の各単語にアクセスして書き込む方法は?

processes 
deleting 
agreed 

そして、このコードを実行した後のC#

PorterStemmer testing = new PorterStemmer(); 
string temp,stemmed; 
string[] lines = System.IO.File.ReadAllLines(@"C:\\Users\\PJM\\Documents\\project\\testerfile.txt"); 
System.Console.WriteLine("Contents of testerfile.txt = "); 
for (int i = 0; i <2; i++) 
    { 
     temp = lines[i]; 
     stemmed = testing.StemWord(temp); 
System.IO.File.WriteAllText(@"C:\\Users\\PJM\\Documents\\project\\testerfile3.txt", stemmed); 
     Console.WriteLine("\t" + stemmed); 
    } 

のコードを、testerfile3は唯一の "AGRE" が含まれています。 ここで私の問題は、文字列配列内の各単語を別々に処理したいということです。つまり、文字列配列にアクセスする際に問題が発生しています。文字列配列のすべてのインデックスにアクセスする方法はありますか? WriteAllTextのドキュメントから

+0

以下に記載されているとおり、あなたは上書きされています。しかし、 "削除"に終わったはずです。 – Paparazzi

答えて

2

ターゲットファイルが既に存在する場合、それは上書きされます。

forループの各反復でファイルが上書きされるため、最後の反復のテキストのみが残ります。

あなたはLINQの選択が非を予測するために使用することができますが、代わりに、forループの、for (int i = 0; i < lines.Length; i++)

また、すべての単語をループに配列のlengthプロパティを使用することができ、またSystem.IO.File.AppendAllText代わり

使用することができます結果を書き込むにはAppendAllLinesを使用してください。

System.IO.File.AppendAllLines(@"C:\\Users\\PJM\\Documents\\project\\testerfile3.txt", lines.Select(l => testing.StemWord(l))); 
+0

チャームのように働いています...私はそれが上書きされていたことを認識していませんでした。 – Pankaj

関連する問題