C# 使用c将随机数写入文本文件#

C# 使用c将随机数写入文本文件#,c#,file,streamwriter,C#,File,Streamwriter,我想将随机数写入文本文件 但是当我试着写随机数时,我能写到49个数字,超过49个它会覆盖所有的数字。 我在下面附上我的代码。请让我知道我怎么做 public void CreateRandomData(int lowerRange, int upperRange) { Random r = new Random(); int number = 0; using (StreamWriter writer = File.AppendText(@"c:\\test.

我想将随机数写入文本文件

但是当我试着写随机数时,我能写到49个数字,超过49个它会覆盖所有的数字。 我在下面附上我的代码。请让我知道我怎么做

public void CreateRandomData(int lowerRange, int upperRange)
{ 
     Random r = new Random(); 
     int number = 0; 
     using (StreamWriter writer = File.AppendText(@"c:\\test.txt"))
     {
         for (int i = 1; i < 100; i++)
         {
             number = r.Next(lowerRange, upperRange);
             writer.Write(number + ",");
         }
     }
}
public void CreateRandomData(int-lowerRange,int-upperRange)
{ 
随机r=新随机();
整数=0;
使用(StreamWriter writer=File.AppendText(@“c:\\test.txt”))
{
对于(int i=1;i<100;i++)
{
数字=r.Next(下限,上限);
writer.Write(数字+“,”);
}
}
}

好的,代码有一些奇怪的地方,但主要是每次运行程序时都会覆盖文件

using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System.IO;
using System.Text;

namespace UnitTestProject3
{
    [TestClass]
    public class UnitTest1
    {
        [TestMethod]
        public void TestMethod1()
        {
            int lowerRange = 1;
            int upperRange = 10;
            string filename = @"c:\\development\test.txt";
            Random r = new Random();
            int number = 0;

            using (StreamWriter writer = new StreamWriter(filename, false, Encoding.UTF8))
            {
                for (int i = 1; i < 500; i++)
                {
                    number = r.Next(lowerRange, upperRange);

                    writer.Write(number + ",");

                }
                writer.Flush();
                writer.Close();
            }

        }
    }
}
使用系统;
使用Microsoft.VisualStudio.TestTools.UnitTesting;
使用System.IO;
使用系统文本;
命名空间UnitTestProject3
{
[测试类]
公共类UnitTest1
{
[测试方法]
公共void TestMethod1()
{
int-lowerRange=1;
int上限=10;
字符串文件名=@“c:\\development\test.txt”;
随机r=新随机();
整数=0;
使用(StreamWriter=newstreamwriter(文件名,false,Encoding.UTF8))
{
对于(int i=1;i<500;i++)
{
数字=r.Next(下限,上限);
writer.Write(数字+“,”);
}
writer.Flush();
writer.Close();
}
}
}
}
其他读者注意:

在写这篇文章时,我注意到当您在记事本中打开追加的文件时,File.Append产生了奇怪的结果。数据已追加,但文件似乎已损坏

我认为这是因为写入程序没有正确刷新或关闭,或者使用了错误的编码


但是,我并没有真正弄清这一点,因为上面的代码出于任何原因都可以工作,并且不使用File.Append。您知道,您可以这样做并使其简单化:

public void CreateRandomData(int lowerRange, int upperRange)
{ 
    Random r = new Random();
    File.AppendAllText(@"c:\\test.txt", String.Join(",", Enumerable.Range(0, 100)
        .Select(n => r.Next(lowerRange, upperRange))));
}

不清楚你的意思。由于调用
Create(…).Close()
,您编写的代码将首先有效地删除文件内容。但无论如何,它只会写49个数字。你的意思是你只是想把代码改成附加到任何东西上?如果是这样,请摆脱
文件.Create(…).Close()
调用。由于您的for语句,它将在49处停止,请使用i yes i want append超过49个数字。。。在for循环本身中。如果我删除文件创建行,那么文件将有以前的文本。如果您想将性能提高几百倍,请使用(){}public void CreateRandomData(int lowerRange,int upperRange){Random r=new Random()将for循环放在
中;int number=0;使用(StreamWriter writer=File.AppendText(@“c:\\test.txt”){for(int i=1;i<100;i++){number=r.Next(lowerRange,upperRange);writer.Write(number+“,”;}}}obvs将文件名更改为您选择的文件名之一经过测试,如果它对您有效,请接受作为答案是的,它工作正常。但是如果我运行代码两次。。以前的数据保留在文件中。我不想那样。我最初想要一个空文件,它将被随机数附加在执行中。如果文件在开始时总是空的,那么它没有真正附加到的文件会被更新,所以每次都会生成一个新文件。(虽然你的第一个代码做到了这一点)也将随机数增加到了500,以防这是你的问题。这比较短,但是否更简单取决于你在学习曲线上的位置。我喜欢linq答案中的一行,它们是超级l33t