2016-03-21 12 views
0

Bu yüzden, Values.txt dosyasındaki değerleri (sayıları) okuyan ve bunları tamsayılar dizisine depolayan bir program yazmalıyım (başlangıçta numarayı bilmiyorum) dosyadaki değerlerin çok uzun olduğunu bilmiyorum). İlk önce dosyada dolaşıyorum ve diziye depolanacak değerlerin sayısını almak için sayaç değişkenini kullanın. Sonra sorun geliyor, değerleri yakalamak ve bunları dizi halinde depolamak için dosyanın başından nasıl başlayacağımı bilmiyorum. Çalıştığımda sonuç olarak 0 0 0 0 0 aldım. yerineBir dosyanın başlangıcından itibaren okumaya başlamak için StreamReader'ı yeniden başlatma

myReader.DiscardBufferedData(); 
myReader.BaseStream.Seek(0, SeekOrigin.Begin); 
myReader.BaseStream.Position = 0; 

I myReader.Close() ve sonra myReader = new StreamReader("Values.txt) kullanırsanız

, sonuç birileri bunun neden açıklayabilir misiniz, doğrudur ve ben bu kodu :)

 string lineOfText = ""; 
     int counter = 0; 
     int[] intArray; 
     StreamReader myReader = new StreamReader("Values.txt"); 


     while(lineOfText != null) 
     { 
      lineOfText = myReader.ReadLine(); 
      if(lineOfText != null) 
      { 
       counter++; 
      } 
     } 
     intArray = new int[counter]; 

     myReader.DiscardBufferedData(); 
     myReader.BaseStream.Seek(0, SeekOrigin.Begin); 
     myReader.BaseStream.Position = 0; 

     counter = 0; 
     while(lineOfText != null) 
     { 
      lineOfText = myReader.ReadLine(); 
      if (lineOfText != null) 
      { 
       intArray[counter] = int.Parse(lineOfText); 
      } 
      counter++; 
     } 
     myReader.Close(); 

     for (int j = 0; j < intArray.Length; j++) 
     { 
      Console.WriteLine(intArray[j]); 
     } 
+1

_If, sadece çağırarak bu biraz basitleştirmek olabilir (https://msdn.microsoft.com/en-us/library [ 'File.ReadAllLines()'.] /s2tte0y1(v=vs.110).aspx) – CodingGorilla

cevap

1

düzeltmek howcan Bu, Return StreamReader to Beginning tek geçişte yapmak istediğinizde akışı nasıl sıfırlayacağınızı açıklar.

Diziler kullanmanız gerekiyor mu? Bir liste yaptıklarınız için mükemmel olurdu, daha sonra bu listeyi bir diziye ekleyebilir veya doğrudan listeden çalışabilirsiniz. Aşağıdaki Kod örnek: can_

List<string> ints = new List<string>(); 
using (StreamReader sr = new StreamReader("example.txt")) 
{ 
    ints.Add(sr.ReadLine()); 
} 
+0

Bir dizi kullanmam gerekiyor: / – Tandy

İlgili konular