[.NET] [I/O] 利用.NET中的StreamReader讀取資料

System::IO::StreamReader可用來把文件檔案變成串流並讀取之。
簡單紀錄使用方法、步驟:

1. 實體化StreamReader類別。
http://msdn.microsoft.com/zh-tw/library/system.io.streamreader(v=vs.80).aspx
有許多建構方法可以實體化他,這邊只自己介紹比較常用的例子。
這邊是讀取專案中自動生成的ReadMe.txt用來當例子。
由於裡面有中文字,所以當沒有設定encoding的時候,讀取會有亂碼產生。
因為初始設定是讀不懂中文的。這時候就需要設定encoding,一般設定了default就可以當成encoding的資料了。
   1: System::IO::StreamReader^ sr=gcnew System::IO::StreamReader("ReadMe.txt",System::Text::Encoding::Default);

2. 有了實體化的資料後,可使用Read方法取得文檔中的字串。
利用ReadReadBlockReadLine等方法來取得字串。

   1: String^ str;
   2:  
   3: //讀取一整行的字串直到讀完為止
   4: do{
   5:     str=sr->ReadLine();
   6: }while(!sr->EndOfStream);

3. 讀完之後就要將他的buffer清空並關閉串流。

   1: sr->DiscardBufferedData();
   2: sr->Close();

Other:
若要指定讀取的位置可以利用以下方法:

   1: //方法1:
   2: //清空BUFFER資料後將串流指到起始點
   3: sr->DiscardBufferedData();
   4: sr->BaseStream->Position=0;
   5:  
   6: //方法2:
   7: sr->DiscardBufferedData();
   8: sr->BaseStream->Seek(0,System::IO::SeekOrigin::End);
指定讀取位置時,若沒先清空BUFFER,則方法會無效。

以上,紀錄之。

2011.11.15更新:

因為需要指到指定的Stream位置...所以利用了每次讀的時候紀錄了Line的資訊。
想在需要用到的時候馬上跑回去某一指定位置....

阿恩溝...
速度真是慢到不行呀! ...整個hang住是常有的事...

所以現在利用字串先將資料記錄下來,若需要用的時候再加以使用囉!

這個網誌中的熱門文章

[Tips] 設定桌面文字顏色

登入失敗: 使用者帳戶限制。可能原因為不允許空的密碼,登入時數限制,或強制的原則限制

[Win7] 電腦管理-損毀傾印