在.NET Framework中進行的所有的輸入和輸出工作都要用到流(stream),流是序列化設備(serial device)的抽象表示。
System.IO包含了用於在文件中讀寫數據的類。
File 類 靜態實用類 提供靜態方法 用於移動 復制和刪除文件
Directory 類靜態實用類 提供靜態方法 用於移動 復制和刪除文件
Path 類 用於處理路徑名稱
FileInfo 類 表示磁盤上的物理文件,該類包含處理文件的方法。要完成對文件的讀寫工作,必須創建Stream對象。
DirectoryInfo 類 表示磁盤上的文件,包含處理目錄的方法。
FileStreamInfo 用作FileInfo和DirectoryInfo的基類,可以使用多態性同時處理文件和目錄。
FileStream類 表示可讀可寫,或者均可的文件,此文件可以同步或一部的讀寫。
SreamReader 從流中讀取字符數據,可使用FileStream將其創建為基類。
StreamWriter 向流中寫入數據,使用FileStream將其創建為基類。
FileSystemWatcher 用於監控文件和目錄,提供了這些文件和目錄發生變化時應用程序可以捕獲的事件。
System.IO.Compression 它允許使用GZIP壓縮或Default壓縮模式讀寫壓縮文件。
System.Runtime.Serialization.Formatters.Binary命名空間中的BinaryFormatter類允許把對象序列化為二進制數據流,並可以反序列化這些數據。
FileStream aFile = new FileStream(filename,FileMode.Member,FileAccess.Member);
FileStream aFile = File.OpenRead(“Data.txt”);
FileInfo aFileInfo = new FileInfo(“Data.txt”);
FileStream aFile = aFileInfo.OpenRead();
DirectoryInfo dir = new DirectoryInfo(Path);
FileSystemInfo[]fsi = dir.GetFileSystemInfos);//獲取所有子目錄及文件
文件位置
Seek()方法。
AFile.Seek(8,SeekOrigin.Begin);//將文件指針移動到文件的第八個字節。
FileStream myReadStream = new FileStream(fileName, FileMode.OpenOrCreate, FileAccess.Read); myReadStream.Seek(6, SeekOrigin.Begin); myReadStream.Read(byData, 0, 128);
StreamReader 類
實現一個 TextReader,使其以一種特定的編碼從字節流中讀取字符。
StreamReader 旨在以一種特定的編碼輸入字符,而 Stream 類用於字節的輸入和輸出。使用 StreamReader 讀取標准文本文件的各行信息。
除非另外指定,StreamReader 的默認編碼為 UTF-8,而不是當前系統的 ANSI 代碼頁。UTF-8 可以正確處理 Unicode 字符並在操作系統的本地化版本上提供一致的結果。

try { // Create an instance of StreamReader to read from a file. // The using statement also closes the StreamReader. using (StreamReader sr = new StreamReader("TestFile.txt")) { String line; // Read and display lines from the file until the end of // the file is reached. while ((line = sr.ReadLine()) != null) { Console.WriteLine(line); } } } catch (Exception e) { // Let the user know what went wrong. Console.WriteLine("The file could not be read:"); Console.WriteLine(e.Message); }

string path = @"c:\temp\MyTest.txt"; try { if (File.Exists(path)) { File.Delete(path); } using (StreamWriter sw = new StreamWriter(path)) { sw.WriteLine("This"); sw.WriteLine("is some text"); sw.WriteLine("to test"); sw.WriteLine("Reading"); } using (StreamReader sr = new StreamReader(path)) { while (sr.Peek() >= 0) { Console.WriteLine(sr.ReadLine()); } } } catch (Exception e) { Console.WriteLine("The process failed: {0}", e.ToString()); }
讀取數據最簡單的方法是Read()方法。
此方法將流的下一個字符作為正整數值返回,如果達到流的結尾處,返回-1.使用Convert實用類把這個值轉化為字符。
StreamReader sr = new StreamReader();
Int nChar;
nChar=sr.Read();
While(nChar!=-1)
{
Console.Write(Convert.ToChar(nChar));
nChar = sr.Read();
}
Sr.Close();
StreamWriter 類
實現一個 TextWriter,使其以一種特定的編碼向流中寫入字符。
FileStream fs = new FileStream(fileName, FileMode.CreateNew, FileAccess.Write, FileShare.None);
StreamWriter swFromFile = new StreamWriter(logFile);
swFromFile.Write(textToAdd);
swFromFile.Flush();
swFromFile.Close();
文件屬性
FileInfo fileInfo = new FileInfo(path);
//去掉隱藏屬性
fileInfo.Attributes &= ~FileAttributes.Hidden;
//去掉只讀屬性
fileInfo.Attributes &= ~FileAttributes.ReadOnly;
添加隱藏屬性
fileInfo.Attributes |= FileAttributes.Hidden;
GetAttibutes()和SetAttributes()方法可以獲取或設定文件屬性。

public void FindFile(string dir) { string[] Alldir = Directory.GetDirectories(dir); try { foreach (string Strdir in Alldir) { FindFile(Strdir + "\\"); listBox1.Items.Add(Strdir + "\\");//添加目錄名 } foreach (string Strfile in Directory.GetFiles(dir)) { listBox1.Items.Add(Strfile); } } catch (Exception ex) { MessageBox.Show(ex.Message); } } private void button1_Click(object sender, EventArgs e) { string path = ""; if (folderBrowserDialog1.ShowDialog() == DialogResult.OK) { path = folderBrowserDialog1.SelectedPath; } if (path.Length > 1) { if (path[path.Length - 1] != '\\') { path += "\\"; } } FindFile(path); //DirectoryInfo dir = new DirectoryInfo(path); //FileSystemInfo[] fsi = dir.GetFileSystemInfos(); //foreach (FileSystemInfo f in fsi) //{ // listBox1.Items.Add(f.FullName); //} }

public static void SaveCompressionFile(string fileName, string data) { FileStream fileStream = new FileStream(fileName, FileMode.OpenOrCreate, FileAccess.Write); GZipStream compressionStream = new GZipStream(fileStream, CompressionMode.Compress); StreamWriter writer = new StreamWriter(compressionStream); writer.Write(data); writer.Close(); } public static string LoadCompressionFile(string fileName) { FileStream fileStream = new FileStream(fileName, FileMode.Open, FileAccess.Read); GZipStream compressionStream = new GZipStream(fileStream, CompressionMode.Decompress); StreamReader reader = new StreamReader(compressionStream); string data = reader.ReadToEnd(); return data; } private void button1_Click(object sender, EventArgs e) { string path = ""; openFileDialog1.InitialDirectory = "c:\\"; openFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*"; openFileDialog1.FilterIndex = 2; openFileDialog1.RestoreDirectory = true; if (openFileDialog1.ShowDialog() == DialogResult.OK) { path = openFileDialog1.FileName; //return new FileStream(path, System.IO.FileMode.Open,System.IO.FileAccess.ReadWrite); } try { label1.Text = textBox1.Text.Length.ToString(); SaveCompressionFile(path, textBox1.Text.Trim()); FileInfo fileInfo = new FileInfo(path); label2.Text = fileInfo.Length.ToString(); textBox2.Text = LoadCompressionFile(path); } catch(IOException ex) { MessageBox.Show(ex.Message); } }

class Program { static void Main(string[] args) { DriveInfo[] Drives; ArrayList hardDisk = new ArrayList(); ; Drives = DriveInfo.GetDrives(); int drvCount = Drives.Length; Console.WriteLine("本地計算機上共有邏輯驅動器 " + drvCount + " 個,分別是:"); foreach (DriveInfo item in Drives) { Console.Write(item + "\t"); if (item.DriveType == DriveType.Fixed) { hardDisk.Add(item.ToString()); } } Console.WriteLine("\n本地計算機上共有本地驅動器 " + hardDisk.Count + " 個,分別是:"); foreach (var Disk in hardDisk) { Console.Write(Disk + "\t"); } string drvName = @"E:\"; DriveInfo drvInfo = new DriveInfo(drvName); Console.WriteLine("驅動器E的信息如下:"); Console.WriteLine("名 稱: " + drvInfo.Name); Console.WriteLine("卷 標: " + drvInfo.VolumeLabel); Console.WriteLine("驅動器類型: " + drvInfo.DriveType); Console.WriteLine("文件系統類型: " + drvInfo.DriveFormat); Console.WriteLine("總共空間大小:" + drvInfo.TotalSize); Console.WriteLine("剩余空間大小:" + drvInfo.TotalFreeSpace); Console.WriteLine("根目錄:" + drvInfo .RootDirectory ); //string path = @"D:\My Documents"; //string[] AllFile = Directory.GetFiles(path); //ArrayList picFile = new ArrayList(); //for (int i = 0; i < AllFile.Length; i++) //{ // FileInfo fi = new FileInfo(AllFile[i]); // if (fi.Extension == ".jpg" || fi.Extension == ".bmp") // picFile.Add(AllFile[i]); //} //foreach (string file in picFile) //{ // Console.WriteLine(file); //} //Console.WriteLine("共找到符合條件的:{0}個文件", picFile.Count.ToString()); //string path = @"C:\aaa\bbb\ccc\dddd"; //if (!Directory.Exists(path)) //{ // Directory.CreateDirectory(path); //} ////Directory類的Exists()方法用來判斷目錄是否存在,存在則返回true; ////Directory類的CreateDirectory()方法用來創建目錄 //得到所有文件 //string[] AllFile = Directory.GetFiles(@"d:\Test"); //foreach (string file in AllFile) //{ // File.Delete(file); //} //string filepath = @"D:\WorkList.txt"; ////string filepath = @"F:\VStest\file.txt"; //FileInfo myfile = new FileInfo(filepath); //FileStream fs = myfile.Create(); //fs.Close(); //myfile.Refresh(); //myfile.Delete(); Console.ReadKey(); } }
注:本文整理自網絡!!!