2015-03-28 3 views
-2

Я хочу записать случайные числа в текстовый файл.Запись случайных чисел в текстовый файл с помощью C#

Но когда я пытаюсь написать случайные числа, я могу писать до 49 чисел и выше 49, он перезаписывает все числа. Я присоединяю свой код ниже. Pls, дайте мне знать, как я могу это сделать?

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 + ","); 
     } 
    } 
} 
+0

Непонятно, что вы имеете в виду. Код, который вы написали, будет эффективно удалять содержимое файла в первую очередь из-за вызова 'Create (...). Close()'. Но в любом случае он будет писать только 49 номеров. Вы имеете в виду, что вы просто хотите изменить код для добавления к тому, что там есть? Если это так, избавитесь от вызова 'File.Create (...). Close()'. –

+0

Это остановка в 49 из-за вашего оператора for, используйте i <= 50. Кроме того, вам не нужно закрывать файл. – Ministry

+0

Да, я хочу добавить более 49 номеров ... в цикл for. Если я удалю строку создания файла, тогда файл будет иметь предыдущий текст. – Jeev

ответ

0

ок есть несколько странных вещей о вашем коде, но, главным образом, кажется, перезаписи файла каждый раз, когда вы запускаете программу

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(); 
      } 

     } 
    } 
} 

Примечание к другим читателям:

Хотя написание это я заметил, что File.Append произвел нечетные результаты, когда вы открыли добавленный файл в блокноте. Данные добавляются, но файл выглядит поврежденным.

Я предполагаю, что это произошло из-за того, что писатель не промывал или не закрывал должным образом или не использовал неправильную кодировку.

Однако, я действительно не докопаться до этого, как приведенный выше код работает по какой-либо причине и не использует File.Append

+0

obvs изменить имя файла на ваш выбор – Ewan

+0

проверено и принято, пожалуйста, примите в качестве ответа, если оно сработает для вас – Ewan

+0

да, он отлично работает. Но если я запустил код 2 раза .. предыдущие данные сохраняются в файле. Мне этого не надо.Сначала я хочу получить пустой файл, который будет добавлен случайными числами для выполнения – Jeev

2

Вы знаете, что вы могли бы просто сделать это и сделать это просто:

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)))); 
} 
+0

Нет. Это короче, но зависит ли это от того, где вы находитесь на кривой обучения. –

+0

Мне нравится одна строка ответов linq, они супер l33t – Ewan

Смежные вопросы