我有一个简单的程序,其中我将7个数字中的6个写入文本文件。逻辑上一切似乎都很好。

但是,这些数字未按预期写入文件。

Random random = new Random();

Console.WriteLine("Please enter the name of the numbers file");
string fileLotto = Console.ReadLine();
//creating the lotto file
FileStream fs = new FileStream("../../" + fileLotto + ".txt", FileMode.OpenOrCreate, FileAccess.Write);
BufferedStream bs = new BufferedStream(fs);
Console.WriteLine("File created");
fs.Close();
StreamWriter sw = new StreamWriter("../.." + fileLotto + ".txt");

for(int i = 0; i < 6; i++)
{
    for(int j = 0; j < 7; j++)
    {
        //Console.Write(random.Next(1, 49));
        sw.Write(random.Next(1, 49) + " " );

    }
    sw.WriteLine();

}
sw.Close();


文件已创建,但是没有数字写入文件……关于为什么的建议?

最佳答案

请注意,您的代码没有经过优化,并且创建了许多不必要的流和缓冲区,但是@Michael的回答概述了在此处使用的正确代码。我的回答只会强调为什么您的代码无法按预期方式工作。

您问题的答案实际上非常简单。

StreamWriter sw = new StreamWriter("../.." + fileLotto + ".txt");


您忘记了将字符串中的/添加到../..。如果假定fileLotto的值为example,则FileStream将创建文件example.txt,但是StreamWriter将访问..example.txt进行写入,并且也将其存储在其他文件夹中。

使用变量来定义必须重复使用的值。记住DRY原理。

Random random = new Random();

Console.WriteLine("Please enter the name of the numbers file");
string fileLotto = Console.ReadLine();
string fileName = "../../" + fileLotto + ".txt";
//creating the lotto file
FileStream fs = new FileStream(fileName, FileMode.OpenOrCreate, FileAccess.Write);
Console.WriteLine("File created");
fs.Close();

StreamWriter sw = new StreamWriter(fileName);

for(int i = 0; i < 6; i++)
{
    for(int j = 0; j < 7; j++)
    {
        //Console.Write(random.Next(1, 49));
        sw.Write(random.Next(1, 49) + " " );

    }
    Console.WriteLine();

}
sw.Close();


我再次说,请使用@Michael的代码。这只是为了突出代码的主要问题。

关于c# - 将数据写入文本文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14069642/

10-10 21:31