步驟 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 類的行為。一旦遍歷了數組,我們便可以象前面一樣關閉這兩個對象。