C# 如何使用Stream Writer检查和写入不同的线部件

C# 如何使用Stream Writer检查和写入不同的线部件,c#,asp.net,forms,stream,C#,Asp.net,Forms,Stream,我正在尝试使用Stream Writer写入特定的行部分,以下是我目前所拥有的: 异常消息告诉我:索引超出了数组的界限。 我正在尝试将其输出到我的文本文件: playerOneName, playerTwoName, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY 基本上,该编写器用于从浏览器中编写玩家一的姓名,以及从另一个浏览器/选项卡中编写玩家二的姓名。我首先要检查第一个字段中是否写有玩家的名字,如果是,我会在第

我正在尝试使用Stream Writer写入特定的行部分,以下是我目前所拥有的:

异常消息告诉我:索引超出了数组的界限。 我正在尝试将其输出到我的文本文件:

playerOneName, playerTwoName, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY 
基本上,该编写器用于从浏览器中编写玩家一的姓名,以及从另一个浏览器/选项卡中编写玩家二的姓名。我首先要检查第一个字段中是否写有玩家的名字,如果是,我会在第二个字段中写第二个玩家。另一个字段留空,用于描述游戏运行时的游戏状态

我可能有逻辑上的问题,请指出,如果你看到任何。我可以使用正则表达式来比较和验证我的玩家在那里吗

我需要流式读取此文件,然后才能流式写入文件,对吗

我正在使用APS.NET网站和表单运行Visual Studio'08

谢谢你的时间 这将导致索引越界错误,因为您正在拆分一个空字符串(将返回一项),然后尝试访问该项列表的第二项

另外,我是否可以建议不要使用StringBuilder,而是直接使用它

String.Join(",", gameState);
创建输出字符串

下面是一个可能的整体解决方案(对于任何错误,我深表歉意,因为我手头没有编译器):

列出游戏状态;
使用(var reader=newstreamreader(文件名))
gameState=reader.ReadLine().Split(新[]{',});
如果(游戏状态[0]=“”)
游戏状态[0]=玩家名称
其他的
游戏状态[1]=玩家名称;
使用(var writer=newstreamwriter(文件名))
WriteLine(String.Join(“,”,gameState));

注意:“使用”是获得免费关闭流的try/finally的一种简便方法(您仍然需要捕获异常)。

这不是我昨天看到的吗?为什么不提这个?它的工作正在进行中,新的错误。逗号将只出现在项目之间,而不是在开始或结束处。您知道我如何仍然可以使用分隔符分割行,但不使用空字符串吗?我不确定您也指的是哪一行。如果你指的是游戏状态,那么它已经在一个数组中了。您可以检查游戏状态[0]==”,如果为假,请将名称放入游戏状态[1],这是否符合您的要求?
string line = "";
string namePartOne = line.Split(DELIMITER)[0];
string namePartTwo = line.Split(DELIMITER)[1];
String.Join(",", gameState);
List<String> gameState;
using (var reader = new StreamReader(filename))
    gameState = reader.ReadLine().Split(new[] {','});

if (gameState[0] == "")
    gameState[0] = playerName
else
    gameState[1] = playerName;

using (var writer = new StreamWriter(filename))
    writer.WriteLine(String.Join(",", gameState));