1. 程式人生 > >C# System.IO 檔案流輸入輸出

C# System.IO 檔案流輸入輸出

一、讀寫文字檔案

可以用fileStream來讀寫文字檔案,但是FileStream是通過位元組形式來讀寫資料的,要把位元組資料轉換為文字,要自己處理編碼轉換。

對於文字檔案的讀寫,通常用 StreamReader類和 StreamWriter類更方便。其底層是通過FileStream實現讀寫文字檔案的。

1、建構函式

Public StreamReader(string path,Encoding encodeing)

其中path指定要讀取的完整檔案路徑,encoding指定要使用的位元組編碼。例如GB2312,UTF8等編碼形式

using System;
using System.IO;
using System.Text;

namespace StreamReader
{
	class Program
	{
		[STAThread]
		public static void Main(string[] args)
		{
			StreamReader sr=new StreamReader("f:\\temp.txt",Encoding.GetEncoding("gb2312"));
			string line;
			while((line=sr.ReadLine())!=null)
			{
				Console.WriteLine(line);
			}
			sr.close();
		}
	}
}


二、寫入文字檔案

與StreamReader類對應的類是StreamWriter類,它專門用於寫入文字檔案

1、建構函式

Public StreamWrite(string path,bool append,Encoding encoding);

其中path指定要寫入的完整檔案路徑,append為false則該檔案被改寫,如果該檔案存在,並且append為true,則資料被追加到該檔案中。否則將建立新檔案。Encoding指定要使用的位元組編碼。

(注意:append為true為追加,append為false為覆蓋)

using System;
using System.IO;
using System.Text;

namespace StreamReader
{
	class Program
	{
		[STAThread]
		public static void Main(string[] args)
		{
			StreamWriter sw=new StreamWriter("f:\\temp.txt",true,Encoding.GetEncoding("gb2312"));
			string line="hello world!;
				sw.WriteLine(line);
			sw.close();
		}
	}
}

三、Stream類

是派生出各種類的抽象類,處理位元組流

其中一些派生類包括

– FileStream

– MemoryStream

– BufferedStream

– CryptoStream

方法包括:


3.1FileStream類建構函式

FileStream(string FilePath, FileMode)

FileStream(string FilePath, FileMode, FileAccess)

FileStream(string FilePath, FileMode, FileAccess, FileShare)

方法:

int Read(byte array, offset, count)

int ReadByte( )

void Write(byte array, offset, count)

void WriteByte(byte value)

列舉數:

FileMode 列舉數

– Append

– Create

/若檔案已存在,則引發IO異常

– CreateNew

– Open

– OpenOrCreate

– Truncate

FileAccess 列舉數

– Read

– Write

– ReadWrite

FileShare 列舉數

– None

– Read

– Write

– ReadWrite

3.2MemoryStream類

用於從記憶體中讀取資料和將資料寫入記憶體中

以下是 MemoryStream 的一些方法

int Read(byte array, offset, count)

int ReadByte( )

void Write(byte array, offset, count)

void WriteByte(byte value)

void WriteTo(Stream stream)

3.3BufferedStream類

用於在緩衝區中讀取和寫入

• 當緩衝區滿(預設緩衝區大小:4096 位元組)或關閉時,內容將自動重新整理輸出到底層流

它有兩個過載的建構函式

Public BufferedStream(Stream StName);

Public BufferedStream(Stream StName,int bsize);

3.4CryptoStream

對資料流中的資料進行加密、解密

using System.Security.Cryptography;

使用前加上上面的名稱空間

四、Dirctory類

1.Directory類

目錄使用 Directory類,可以用目錄類建立、移動目錄,並可列舉目錄及子目錄的內容。Directory類全部是靜態方法。


2、DirectoryInfo類

在使用DirectoryInfo類的屬性和方法前必須先建立它的物件例項,在建立時需要指定該例項所對應的目錄。例如:DirectoryInfo di=new DirectoryInfo(''c:\\mydir'');DirectoryInfo類的常用方法見表。


五、Path類