步驟 6. 檔案輸入/輸出
現在實作讀取輸入檔案與寫入輸出檔案。將每一行讀取到字串陣列中,然後輸出該陣列。下一步將使用 QuickSort 演算法對陣列排序。
修改原始碼
更改 C# 原始檔(class1.cs),如下面以斜體突出顯示的程式碼所示。其他差異(如類別名稱)可忽略不計。
// Import namespaces
using System;
using System.Collections;
using System.IO;
// Declare namespace
namespace MsdnAA
{
// Declare application class
class QuickSortApp
{
// Application initialization
static void Main(string[] szArgs)
{
... ... ...
// Read contents of source file
string szSrcLine;
ArrayList szContents = new ArrayList();
FileStream fsInput = new FileStream(szSrcFile, FileMode.Open, FileAccess.Read);
StreamReader srInput = new StreamReader(fsInput);
while ((szSrcLine = srInput.ReadLine()) != null)
{
// Append to array
szContents.Add(szSrcLine);
}
srInput.Close();
fsInput.Close();
// TODO: Pass to QuickSort function
// Write sorted lines
FileStream fsOutput = new FileStream(szDestFile, FileMode.Create, FileAccess.Write);
StreamWriter srOutput = new StreamWriter(fsOutput);
for (int nIndex = 0; nIndex < szContents.Count; nIndex++)
{
// Write line to output file
srOutput.WriteLine(szContents[nIndex]);
}
srOutput.Close();
fsOutput.Close();
// Report program success
Console.WriteLine("\nThe sorted lines have been written.\n\n");
}
}
}
從來源檔案讀取
使用 FileStream 類別開啟來源檔案,再加入 StreamReader 類別,即可使用其 ReadLine() 方法。呼叫 ReadLine() 直到傳回 null(表示到達檔案結尾)。迴圈中將讀取的行存入字串陣列,然後關閉兩個物件。
寫入輸出檔案
假設已用 QuickSort 對字串陣列排序,接下來輸出陣列內容。同樣方式將 StreamWriter 附加到 FileStream,便可使用 WriteLine() 方法,方便模仿 Console 類別行為。遍歷陣列後關閉兩個物件。