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();
}
}
}
回答
sr.Close必須讀取文件後執行,並同時需要大約寫功能:
while(){
function();
}
如果這條線= NULL是確定用C#!我不太舒服,但我認爲StreamReader中有一個函數可以檢查流的結束。
但是,學習C#的基本語法是個好主意。
這裏是由線讀取文件線的正確方法:
using (StreamReader sr = File.OpenText("test.txt"))
{
string line;
while ((line = sr.ReadLine()) != null)
Console.WriteLine(line);
}
一旦using
塊結束流會自動關閉。
您能解釋一下C#如何在while循環中解析該行嗎?具體而言'while((line = sr.ReadLine())!= null)';我不明白你如何擁有一個賦值語句,然後在一行中檢查!= null。我已經嘗試過了,它效果很好,我只是想知道它爲什麼起作用。 @Dalmas – rivanov
約翰尼是對的。您想要執行以下操作:
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();
sr.Close()關閉文件流。
讀取線最簡單的方法是這樣的:
string lines[] = File.ReadAllLines("c:\\test.txt");
從本質上講,什麼是錯的你的代碼是該行的值不會改變這會導致你的應用程序的無限循環。你也沒有在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();
}
}
}
不知何故,我遇到了這個,直到我發佈了答案,才知道它有多年了......哎呀:) –
- 1. PowerShell的的StreamReader的ReadLine/ReadToEnd的讀取同一行多次
- 2. 百勝顯示的ReadLine但readline的命令不工作
- 3. C#StreamReader的ReadToEnd的凍結
- 4. 關閉StreamReader的ReadToEnd的
- 5. c#standard output readtoEnd()
- 6. Java:不能讓readline()工作
- 7. Ç的Readline功能不工作
- 8. 使用帶有HttpWebResponse塊的StreamReader塊ReadToEnd()
- 9. C#ReadToEnd,並更改文本
- 10. StreamSocket DataReader ReadToEnd擴展方法
- 11. readLine()函數在Java中不工作
- 12. Readline不能在rvm工作 - Ubuntu 11.10
- 13. DbConnection.Open()的作品,但dbConnection.OpenAsync()不
- 14. mysql_fetch_array()的作品,但mysql_fetch_object()不
- 15. System.Web.Mail的作品,System.Net.Mail不
- 16. Dns.GetHostByAddress()的作品,但Dns.GetHostEntry()不
- 17. HttpWebRequest的作品。 WebClient.UploadFile不
- 18. OnTouch的作品,但OnClickListener不?
- 19. My.Settings.MyConnectionString的作品,但app.config不?
- 20. OpenGL:glDrawArrays的作品,但glDrawElements不
- 21. 的Panda3D startingwindow作品或者作品不是沒有道理的
- 22. 暫停的readline
- 23. 電子的Readline
- 24. 怎樣的readline
- 25. io.ReadCloser的ReadLine
- 26. 的Java 6的readline
- 27. bufferedreader readline如何工作?
- 28. 優化BufferedReader readLine()操作
- 29. readline無法正常工作
- 30. readLine()無法正常工作
這應該是什麼語言?請適當標記。 –