Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何格式化流编写器以写入文本文件?_C#_Asp.net_Forms_Stream - Fatal编程技术网

C# 如何格式化流编写器以写入文本文件?

C# 如何格式化流编写器以写入文本文件?,c#,asp.net,forms,stream,C#,Asp.net,Forms,Stream,文本文件用于描述web浏览器上游戏的状态。所以我需要格式化我的nameWriter.WriteLine,使其看起来像 Output to text file: playerOneName, playerTwoName, _ , _ , _ , _ , _ , _ , _ , _ 我知道这听起来像是“哦,就写这个吧!”但不是,下划线是一个空白字段,将由我的StreamWriter替换,它跟踪玩家在tic-tac-toe网络游戏中的动作。我可以用什么来代替下划线来让我的读写空间可用 这是我的Str

文本文件用于描述web浏览器上游戏的状态。所以我需要格式化我的nameWriter.WriteLine,使其看起来像

Output to text file:
playerOneName, playerTwoName, _ , _ , _ , _ , _ , _ , _ , _
我知道这听起来像是“哦,就写这个吧!”但不是,下划线是一个空白字段,将由我的StreamWriter替换,它跟踪玩家在tic-tac-toe网络游戏中的动作。我可以用什么来代替下划线来让我的读写空间可用

这是我的StreamWriter,现在我只有添加玩家名的功能

你能告诉我如何将输出格式化为文本吗? 也许把它分成一个数组?并使用数组分隔符列表键入逗号

    string[] lineParts... and reference the linePart[0-11] 
and then do a lineParts = line.Split(delimiterList)?
这是我的代码

private void WriteGame(string playerOneName, string playerTwoName, string[] cells)
    {
        StreamWriter gameStateWriter = null;
        StringBuilder sb = new StringBuilder();
        try
        {
            gameStateWriter = new StreamWriter(filepath, true);
            gameStateWriter.WriteLine(playerOneName + " , " + playerTwoName);
            string[] gameState = { playerOneName, 
            playerTwoName, null, null, null, null, 
    null, null, null, null, null };//I cannot use null, they will give me errors
            foreach (string GameState in gameState)
            {
                sb.Append(GameState);
                sb.Append(",");
            }
            gameStateWriter.WriteLine(sb.ToString());
        }
        catch (Exception ex)
        {
            txtOutcome.Text = "The following problem ocurred when writing to the file:\n"
               + ex.Message;
        }
        finally
        {
            if (gameStateWriter != null)
                gameStateWriter.Close();
        }
    }
最后,如果文本文件中已经有playerName,我如何在它之后专门写playerWoName并检查它是否存在?


使用Visual Studio'08 ASP.NET网站和表单

首先,定义以下事实:下划线是一种特殊的东西,对您来说意味着空,逗号是分隔符:

const string EMPTY = "_";
const string DELIMITER = ",";
其次,不要在逗号和值之间写空格,这只会让你以后的生活更加困难:

// removed spaces
gameStateWriter.WriteLine(playerOneName + DELIMITER + playerTwoName);
现在您的游戏状态已准备好创建:

string[] gameState = { playerOneName, playerTwoName, EMPTY, EMPTY, EMPTY, EMPTY, 
                       EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,  };
要检查播放器2是否已经存在,您需要打开并读取现有文件,并检查第二个令牌是否为空。也就是说,如果您已经阅读了该文件

var line = "..."; // read the file until the line that .StartsWith(playerOne)
var playerTwo = line.Split(DELIMITER)[1];

if (playerTwo == EMPTY)
{
     // need to store the real playerTwo, otherwise leave as is
}

首先,定义以下事实:下划线是一种特殊的东西,对您来说意味着空,逗号是您的分隔符:

const string EMPTY = "_";
const string DELIMITER = ",";
其次,不要在逗号和值之间写空格,这只会让你以后的生活更加困难:

// removed spaces
gameStateWriter.WriteLine(playerOneName + DELIMITER + playerTwoName);
现在您的游戏状态已准备好创建:

string[] gameState = { playerOneName, playerTwoName, EMPTY, EMPTY, EMPTY, EMPTY, 
                       EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,  };
要检查播放器2是否已经存在,您需要打开并读取现有文件,并检查第二个令牌是否为空。也就是说,如果您已经阅读了该文件

var line = "..."; // read the file until the line that .StartsWith(playerOne)
var playerTwo = line.Split(DELIMITER)[1];

if (playerTwo == EMPTY)
{
     // need to store the real playerTwo, otherwise leave as is
}

你可以保留你的代码,但不是
sb.Append(游戏状态)执行<代码>某人追加(游戏状态??)在当前代码中


“?”在C#-所以
null的结果??“
是”;
是“SomeValue”?“
是“SomeValue”。

你可以保留你的代码,但不是
sb.Append(游戏状态)执行<代码>某人追加(游戏状态??)在当前代码中


“?”在C#-所以
null的结果??“\u”
是“\u”并且
是“SomeValue”?“\u”
是“SomeValue”

仅供参考:您的streamwriter应该位于
使用的
块中。它将负责在其作用域结束时处理流。此外,为什么您的网站需要创建文本文件来存储信息?文本文件是服务器文件,我正在练习如何将服务器上的文件读写到浏览器。对于玩家在tic tac toe游戏的9个按钮中的每一个移动,都会记录在服务器文本文件中,由玩家二共享。所以他们在同一个文件上玩同一个游戏。但是可以有多个游戏在进行。这意味着我需要使用不同的线来跟踪每个游戏的进程。是的,代码还有很多其他问题(为什么游戏状态是一组字符串而不是一个对象?这是最大的问题)。事实上,我在做一个3人项目,而我的同龄人没有帮助。真见鬼,如果我知道到底要去那里干什么。如果你有任何建议的话,我很想听听,我就是通过尝试和错误来完成这个项目的。两个玩家共享这个文件,一个数组会给我11个位置。2个用于玩家,9个用于tic tac toe场上的按钮数量。因此,如果他们按下按钮5,我的球员姓名后的第五个字段将变成“X”。所以,在检查winner时,我会在该数组中寻找不同的组合以找到winner。仅供参考:您的streamwriter应该位于使用
块中。它将负责在其作用域结束时处理流。此外,为什么您的网站需要创建文本文件来存储信息?文本文件是服务器文件,我正在练习如何将服务器上的文件读写到浏览器。对于玩家在tic tac toe游戏的9个按钮中的每一个移动,都会记录在服务器文本文件中,由玩家二共享。所以他们在同一个文件上玩同一个游戏。但是可以有多个游戏在进行。这意味着我需要使用不同的线来跟踪每个游戏的进程。是的,代码还有很多其他问题(为什么游戏状态是一组字符串而不是一个对象?这是最大的问题)。事实上,我在做一个3人项目,而我的同龄人没有帮助。真见鬼,如果我知道到底要去那里干什么。如果你有任何建议的话,我很想听听,我就是通过尝试和错误来完成这个项目的。两个玩家共享这个文件,一个数组会给我11个位置。2个用于玩家,9个用于tic tac toe场上的按钮数量。因此,如果他们按下按钮5,我的球员姓名后的第五个字段将变成“X”。所以,当检查winner时,我在该数组中寻找不同的组合以找到winner。谢谢,你为我分解了它,真的很好。谢谢,你为我分解了它,真的很好。这很酷,谢谢你向我展示了这一点,当我需要定义一个带有默认值的空变量时,我会记住这一点。对于我来说,这个“u”空值需要由我的StreamWriter写入X或O。如果我将默认值设置为X,它会工作吗,所以我只需要处理玩家2的符号。这很酷,感谢您向我展示了这一点,当我需要定义一个带有默认值的可空变量时,我会记住这一点。对于我的,这个“u”空值需要由我的StreamWriter写入X或O。如果我将默认值设置为X,它会工作吗,所以我只需要处理玩家2的符号。