C# 與檔案處理

基礎篇

C# 簡介

開發環境

變數與運算

流程控制

陣列

函數

物件

例外處理

函式庫篇

檔案處理

資料結構

正規表達式

Thread

應用篇

視窗程式

媒體影音

網路程式

遊戲程式

手機程式

資料庫

雲端運算

特殊功能

委派

擴展方法

序列化

LinQ

WPF

網路資源

教學影片

投影片

教學文章

軟體下載

考題解答

101習題

簡介

C# 當中的檔案主要以串流 (Stream) 的形式呈現,串流讀取器 (StreamReader) 與串流寫入器 (StreamWriter) 是兩個主要的檔案處理類別。另外像 File,FileInfo, DirectoryInfo 等,則是用來存取檔案屬性與資料夾的類別。而BufferedStream、FileStream、MemoryStream、NetworkStream 則是分別對應到緩衝、檔案、記憶體、網路等類型的串流物件。因此串流可以說是檔案與網路的共同介面。

範例一

以下範例中的 fileToText() 函數,會將一個文字檔讀入放到字串中傳回,其方法是利用 StreamReader 物件,指定所要讀取的檔案,然後利用 readToEnd() 函數讀取整個文字檔,再用 Close() 函數關閉該檔案。

using System;
using System.IO;
class FileTest 
{
 public static void Main(String[] args)
 {
 String text = fileToText(args[0]);
 Console.WriteLine(text);
 }
 public static String fileToText(String filePath)
 {
 StreamReader file = new StreamReader(filePath);
 String text = file.ReadToEnd();
 file.Close();
 return text;
 }
}

上述範例的執行結果如下所示,必須注意的是,Hello.txt 檔案必須存在,而且儲存成 Unicode 的 UTF8 格式,這是因為 C# 內部預設使用 Unicode 的編碼格式。如果希望讀取 Big5 (或 GB2312) 格式的檔案,必須在 StreamReader() 建構函數當中,指定StreamReader file = new StreamReader(filePath, System.Text.Encoding.GetEncoding("Big5")) ,如此 StreamReader 才會以 Big5 的編碼方式對檔案進行讀取,結果才不會變成亂碼。

D:\>csc FileTest.cs
Microsoft (R) Visual C# 2008 Compiler version 3.5.30729.1
for Microsoft (R) .NET Framework version 3.5
Copyright (C) Microsoft Corporation. All rights reserved.
D:\>FileTest Hello.txt
Hello !
你好 !

範例二

using System;
using System.IO;
class FileTest
{
 public static void Main(String[] args)
 {
 String text1 = "Hello, C#!";
 String file = "Hello.txt";
 textToFile(file, text1);
 String text2 = fileToText(file);
 Console.WriteLine(text2);
 }
 public static String fileToText(String filePath)
 {
 StreamReader file = new StreamReader(filePath);
 String text = file.ReadToEnd();
 file.Close();
 return text;
 }
 public static void textToFile(String filePath, String text)
 {
 StreamWriter file = new StreamWriter(filePath);
 file.Write(text);
 file.Close();
 }
}

執行結果

Hello, C#!

範例三:物件導向寫法

using System;
using System.IO;
class File
{
 String path;
 public static void Main(String[] args)
 {
 File file = new File("Hello.txt");
 file.save("Hello, C#!");
 String text2 = file.load();
 Console.WriteLine(text2);
 }
 public File(String path)
 {
 this.path = path;
 }
 public String load()
 {
 StreamReader file = new StreamReader(path);
 String text = file.ReadToEnd();
 file.Close();
 return text;
 }
 public void save(String text)
 {
 StreamWriter file = new StreamWriter(path);
 file.Write(text);
 file.Close();
 }
}

執行結果

Hello, C#!

範例四:更物件導向的寫法

using System;
using System.IO;
class TextFile
{
 String path;
 String text;
 public static void Main(String[] args)
 {
 TextFile file = new TextFile();
 file.load(args[0]).print();
 }
 public TextFile() {}
 public TextFile load(String path)
 {
 this.path = path;
 StreamReader file = new StreamReader(path);
 text = file.ReadToEnd();
 file.Close();
 return this;
 }
 public TextFile save()
 {
 StreamWriter file = new StreamWriter(path);
 file.Write(text);
 file.Close();
 return this;
 }
 public TextFile print()
 {
 Console.WriteLine("file: path="+path);
 Console.WriteLine(text);
 return this;
 }
}

執行結果

C:\ccc>csc TextFile.cs
Microsoft (R) Visual C# 2005 Compiler version 8.00.50727.3053
for Microsoft (R) Windows (R) 2005 Framework version 2.0.50727
Copyright (C) Microsoft Corporation 2001-2005. All rights reserved.
C:\ccc>TextFile Hello.txt
file: path=Hello.txt
Hello, C#!
C# 真有趣!
I love C#.

Post preview:

(will not be published)


本網頁的作者、授權與引用方式

作者
陳鍾誠,於金門大學資訊工程系,電子郵件:wt.ude.uqn|ccc#wt.ude.uqn|ccc,網站:http://ccckmit.wikidot.com
授權
本文採用創作共用 (Creative Common) 3.0 版的 姓名標示─非商業性─相同方式分享 授權條款,歡迎轉載或修改使用,但若做為商業使用時必須取得授權,引用本文時請參考下列格式。
中文版 (APA格式)
陳鍾誠 (10 Jun 2010 01:41),(網頁標題) C# 與檔案處理,(網站標題) 免費電子書:C# 程式設計,10 Jun 2010 01:41,取自 http://cs0.wikidot.com/files ,網頁修改第 7 版。
英文版 (APA格式)
Chung-Chen Chen (10 Jun 2010 01:41), Retrieved 10 Jun 2010 01:41 from http://cs0.wikidot.com/files, Page Revision 7.
page revision: 7, last edited: 01 Aug 2019 02:41
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License
Click here to edit contents of this page.
Click here to toggle editing of individual sections of the page (if possible). Watch headings for an "edit" link when available.
Append content without editing the whole page source.
Check out how this page has evolved in the past.
If you want to discuss contents of this page - this is the easiest way to do it.
View and manage file attachments for this page.
A few useful tools to manage this Site.
Change the name (also URL address, possibly the category) of the page.
View wiki source for this page without editing.
View/set parent page (used for creating breadcrumbs and structured layout).
Notify administrators if there is objectionable content in this page.
Something does not work as expected? Find out what you can do.
General Wikidot.com documentation and help section.
Wikidot.com Terms of Service - what you can, what you should not etc.
Wikidot.com Privacy Policy.

AltStyle によって変換されたページ (->オリジナル) /