2011-08-16 27 views
0
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.IO; 

namespace ExtractData 
{ 
    class Program 
    { 
    static void Main(string[] args) 
    { 
     StreamReader sr = File.OpenText("test.txt"); 
     //string line = sr.ReadToEnd(); 
     string line = sr.ReadLine(); 
     sr.Close(); 
     while (line != null) ; 
     Console.WriteLine(line); 
     Console.ReadLine(); 
    } 
    } 
} 
+1

這應該是什麼語言?請適當標記。 –

回答

0

sr.Close必須讀取文件後執行,並同時需要大約寫功能:

while(){ 
    function(); 
} 

如果這條線= NULL是確定用C#!我不太舒服,但我認爲StreamReader中有一個函數可以檢查流的結束。

但是,學習C#的基本語法是個好主意。

2

這裏是由線讀取文件線的正確方法:

using (StreamReader sr = File.OpenText("test.txt")) 
{ 
    string line; 
    while ((line = sr.ReadLine()) != null) 
     Console.WriteLine(line); 
} 

一旦using塊結束流會自動關閉。

+0

您能解釋一下C#如何在while循環中解析該行嗎?具體而言'while((line = sr.ReadLine())!= null)';我不明白你如何擁有一個賦值語句,然後在一行中檢查!= null。我已經嘗試過了,它效果很好,我只是想知道它爲什麼起作用。 @Dalmas – rivanov

1

約翰尼是對的。您想要執行以下操作:

int counter = 0; 
string line; 

// Read the file and display it line by line. 
System.IO.StreamReader file = new System.IO.StreamReader("c:\\test.txt"); 
while((line = file.ReadLine()) != null) 
{ 
    Console.WriteLine (line); 
    counter++; 
} 

file.Close(); 

// Suspend the screen. 
Console.ReadLine(); 
0

sr.Close()關閉文件流。

讀取線最簡單的方法是這樣的:

string lines[] = File.ReadAllLines("c:\\test.txt"); 
0

從本質上講,什麼是錯的你的代碼是該行的值不會改變這會導致你的應用程序的無限循環。你也沒有在while循環中做任何事情。

我已經糾正了下面的代碼:

using System; 
using System.IO; 

namespace ExtractData 
{ 
    class Program 
    { 
    static void Main(string[] args) 
    { 
     StreamReader sr = File.OpenText("test.txt"); 

     string line; 
     while ((line = sr.ReadLine()) != null) 
     { Console.WriteLine(line); } 

     sr.Close(); 
     Console.ReadKey(); 
    } 
    } 
} 

不過,我會建議(如其他人所說)執行下列操作之一:

如果它是一個小文件,你可以加載整個文件成從那裏

using System; 
using System.IO; 

namespace ExtractData 
{ 
    class Program 
    { 
    static void Main(string[] args) 
    { 
     foreach (var line in File.ReadAllLines("test.txt")) 
     { Console.WriteLine(line); } 

     Console.ReadKey(); 
    } 
    } 
} 

或者存儲器和工作有了它,逐行讀取文件中的行

using System; 
using System.IO; 

namespace ExtractData 
{ 
    class Program 
    { 
    static void Main(string[] args) 
    { 
     using (StreamReader sr = File.OpenText("test.txt")) 
     { 
     string line; 
     while ((line = sr.ReadLine()) != null) 
     { Console.WriteLine(line); } 
     } 

     Console.ReadKey(); 
    } 
    } 
} 
+0

不知何故,我遇到了這個,直到我發佈了答案,才知道它有多年了......哎呀:) –