[.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的資料了。
2. 有了實體化的資料後,可使用Read方法取得文檔中的字串。
利用Read、ReadBlock、ReadLine等方法來取得字串。
3. 讀完之後就要將他的buffer清空並關閉串流。
Other:
若要指定讀取的位置可以利用以下方法:
指定讀取位置時,若沒先清空BUFFER,則方法會無效。
以上,紀錄之。
2011.11.15更新:
因為需要指到指定的Stream位置...所以利用了每次讀的時候紀錄了Line的資訊。
想在需要用到的時候馬上跑回去某一指定位置....
阿恩溝...
速度真是慢到不行呀! ...整個hang住是常有的事...
所以現在利用字串先將資料記錄下來,若需要用的時候再加以使用囉!
簡單紀錄使用方法、步驟:
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方法取得文檔中的字串。
利用Read、ReadBlock、ReadLine等方法來取得字串。
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);
以上,紀錄之。
2011.11.15更新:
因為需要指到指定的Stream位置...所以利用了每次讀的時候紀錄了Line的資訊。
想在需要用到的時候馬上跑回去某一指定位置....
阿恩溝...
速度真是慢到不行呀! ...整個hang住是常有的事...
所以現在利用字串先將資料記錄下來,若需要用的時候再加以使用囉!