這篇文章主要爲大家詳細介紹了C#使用FileStream複製一個任意文件,具有一定的參考價值,感興趣的小夥伴們可以參考一下
FileStream,顧名思義,文件流。流,是字節流。我的理解是,硬盤上存在一個字節流,內存裏也有一個字節流,它們是對應的。程序運行時,我們只能對內存裏的字節流直接操作,在它被關閉的時候,它的內容自動寫入硬盤上的相應字節流。
複製一個文件的基本思路是:逐一讀取原文件流的字節,逐一寫入新文件流中。分別用到文件流的ReadByte()和WriteByte()方法。這裏要注意的是,讀取時以字節爲單位,一個字節如下圖所示
是一個0和1組合的序列。ReadByte()讀取一個字節後將這個序列求值,返回的是整形數值。如果讀到文件的盡頭了,不能成功讀取字節了,返回的是-1。這個設計是非常合理的。因爲只要是個字節,總是能求出它大於或等於0的值的。沒有字節了,就返回-1了。這樣的話,可以把-1作爲循環讀取終止的標誌。
我下面以一個圖片文件的複製爲例講解。
在C盤新建一個畫圖文件,另存爲png格式,文件名pic1。
然後執行以下代碼:
using System; using System.IO; namespace Demo { class Program { public static void Main(string[] args) { FileStream fs1 = new FileStream("c:/pic1.png",FileMode.Open);//FileAccess is dispensable. //FileAccess is the extra contract. FileStream fs2 = new FileStream("c:/pic2.png",FileMode.Create); int d; byte b; while( ( d = fs1.ReadByte() ) != -1 ) { b = (byte)d; fs2.WriteByte( b ); } fs1.Close(); fs2.Close(); Console.Write("Press any key to continue . . . "); Console.ReadKey(true); } } }
會在c盤下生成一個和pic1一模一樣的圖片文件pic2.
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持神馬文庫。