C# 在数组末尾写入一个字符

C# 在数组末尾写入一个字符,c#,arrays,streamwriter.write,C#,Arrays,Streamwriter.write,这是我的密码: for (int j = 0; j < bufferreader.Length; j++) { using (StreamWriter sw = File.AppendText(@"C:\Users\yamald\Documents\Normal.data")) { //sw.Write(); if (bufferreader.length != null) { sw.Write(bu

这是我的密码:

for (int j = 0; j < bufferreader.Length; j++)
{
    using (StreamWriter sw = File.AppendText(@"C:\Users\yamald\Documents\Normal.data"))
    {
        //sw.Write();

        if (bufferreader.length != null)
        {
            sw.Write(bufferreader[j] + ",");
        }
        else
        {
            sw.WriteLine("\n");
        }
    }
}
for(int j=0;j

如何将数组末尾的“\n”写入文件?
else
命令不运行。

您可能只需将StreamWriter对象置于其他对象之前,并使其在循环完成之前可用,然后只需在循环后写入
换行符,如下所示:

using (StreamWriter sw = File.AppendText(@"C:\Users\yamald\Documents\Normal.data"))
{
    for (int j = 0; j < bufferreader.Length; j++)
    {
        sw.Write(bufferreader[j] + ",");
    }
    sw.WriteLine("\n");
}
使用(StreamWriter sw=File.AppendText(@“C:\Users\yamald\Documents\Normal.data”))
{
for(int j=0;j
使用
while
循环并执行类似
while(bufferreader.length!=null)
的操作,而不是
for
循环和
if
语句,可能更好,但这取决于您,我已经有一段时间没有使用bufferreader了,因此不知道确切的语法


但是,
else
从未执行的原因是(正如EoiFirst正确地说的)您没有实际更改bufferreader.length,因此它永远不会为null。

您需要放置
sw.WriteLine(“\n”)在for循环之后

当j=bufferreader.length时循环停止,if语句始终为true

另外,我认为bufferreader.length永远不会为null,因为您永远不会修改这个变量。我想你需要的是:

if (bufferreader.length > j)

这样做的问题是
sw
将不存在于
for
循环之外,因此可能还需要声明它,而不是使用
using
。也许把它放在里面用。是的,那也行。事实上,为了反映这一点,我改变了答案+谢谢你的建议,谢谢你的回答。这就是解决方案
sw
应该在循环之外。谢谢,我认为
while
一旦我想将数组的内容写入一个文件,然后在每行的末尾写入
\n
。这将生成一个数据集。您仍然可以使用while循环,并在循环之后写入
/n
(与此解决方案之后的操作相同)。每行只需一个while循环。但是,这并没有多大区别,所以不要担心。我完全担心你的解决方案,但我希望给我一个例子。为什么对我的主题有这样的负面看法<代码>while(bufferreader.lenght!=null)sw.Write(bufferreader[i]+“,”)
是这样吗?这不起作用,因为bufferreader.length永远不会变为null(因此它将创建一个无限循环)。您可以在(!bufferreader.EndOfStream)sw.Write(bufferreader.Next()+“,”)时尝试
。我在这里找到了方法:嗨,你能给我投赞成票吗。我现在不能发布任何问题