Stream Writerを使用して特定の行部分に書き込もうとしています。これまでのところ、次のようになっています。
例外メッセージは私に与えています:インデックスは配列の範囲外でした。
private void WriteData(string playerName)
{
StreamWriter nameWriter = null;
StringBuilder sb = new StringBuilder();
try
{
string line = "";
string namePartOne = line.Split(DELIMITER)[0];
string namePartTwo = line.Split(DELIMITER)[1];
if (namePartOne != EMPTY)
{
namePartTwo = playerName;
string[] gameState = { namePartOne, namePartTwo, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY };
sb.Append(gameState);
nameWriter.WriteLine(String.Join(",", gameState));
}
else
{
nameWriter = new StreamWriter(filepath, true);
string[] gameState = { playerName, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY };
nameWriter.WriteLine(String.Join(",", gameState));
}
}
catch (Exception ex)
{
txtTextBox2.Text = "The following problem ocurred when writing to the file:\n"
+ ex.Message;
}
finally
{
// Closing the StreamWriter should close it
// AND its underlying FileStream
if (nameWriter != null)
nameWriter.Close();
}
}
私はこれを私のテキストファイルに出力しようとしています:
playerOneName, playerTwoName, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY
基本的に、このライターは、ブラウザーからプレーヤー1を書き込み、別のブラウザー/タブからプレーヤー2の名前を書き込むために使用されます。最初にプレイヤーの名前が最初のフィールドに書かれているかどうかを確認したいのですが、書かれている場合は、2番目のプレイヤーを2番目のフィールドに書き込みます。他のフィールドは、ゲーム実行時のゲーム状態を説明するために空のままになっています。
論理的な問題があるかもしれません。もしあれば指摘してください。正規表現を使用して、プレーヤーがいることを比較および検証できますか?
ファイルをストリーム書き込みする前に、このファイルをストリーム読み取りする必要がありますが、それは正しいですか?
APS.NETWebサイトとフォームを使用してVisualStudio'08を実行しています。