首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> VC >> VC 教學

C++/CLI 輸入輸出完整指南:Stream、Reader/Writer 與標準串流

     編輯:VC 教學

IO 體系概覽

.NET IO 核心為 System.IO.Stream(位元組串流)與 TextReader/TextWriter(字元串流)。常用衍生類別:

類別用途
FileStream檔案位元組讀寫
MemoryStream記憶體緩衝區
BufferedStream加緩衝提升效能
StreamReader/Writer文字檔讀寫(編碼支援)
StringReader/Writer字串當作串流
BinaryReader/Writer基本型別二進位讀寫

三個預設標準串流

程式啟動自動建立:

  • Console.In (TextReader) —— 標準輸入
  • Console.Out (TextWriter) —— 標準輸出
  • Console.Error (TextWriter) —— 標準錯誤

常用操作範例

文字檔寫入/讀取

// 寫入
StreamWriter^ sw = gcnew StreamWriter("log.txt", false, Encoding::UTF8);
sw->WriteLine("Line 1");
sw->WriteLine("Line 2");
sw->Close();

// 讀取
StreamReader^ sr = gcnew StreamReader("log.txt", Encoding::UTF8);
String^ line;
while ((line = sr->ReadLine()) != nullptr)
    Console::WriteLine(line);
sr->Close();

二進位結構化資料

// 寫入
FileStream^ fs = File::Open("data.bin", FileMode::Create);
BinaryWriter^ bw = gcnew BinaryWriter(fs);
bw->Write(123);
bw->Write(3.14);
bw->Write("Hello");
bw->Close();

// 讀取
fs = File::Open("data.bin", FileMode::Open);
BinaryReader^ br = gcnew BinaryReader(fs);
int i = br->ReadInt32();
double d = br->ReadDouble();
String^ s = br->ReadString();
br->Close();

檔案/目錄資訊


FileInfo^ fi = gcnew FileInfo("test.txt");
Console::WriteLine("Size: {0}, Created: {1}", fi->Length, fi->CreationTime);

DirectoryInfo^ di = gcnew DirectoryInfo(".");
for each (FileInfo^ f in di->GetFiles("*.txt"))
    Console::WriteLine(f->Name);

路徑操作


String^ full = Path::GetFullPath("..\\data.txt");
String^ dir  = Path::GetDirectoryName(full);
String^ name = Path::GetFileName(full);
String^ ext  = Path::GetExtension(full);
String^ tmp  = Path::GetTempFileName(); // 建立唯一暫存檔

最佳實務

  • 一律使用 using 區塊(C++/CLI 無 using 關鍵字,請用 try/finally 確保 Close()/Dispose())。
  • 指定編碼(Encoding::UTF8)避免跨平台亂碼。
  • 大檔案採用 FileStream + 緩衝區手動讀寫,避免一次載入記憶體。
  • 非同步 IO:BeginRead/EndRead 或 Task(.NET 4.5+)提升回應性。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved