溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C#使用FileStream復制一個任意文件

發布時間:2020-08-29 20:47:29 來源:腳本之家 閱讀:443 作者:CGGUANG 欄目:編程語言

FileStream,顧名思義,文件流。流,是字節流。我的理解是,硬盤上存在一個字節流,內存里也有一個字節流,它們是對應的。程序運行時,我們只能對內存里的字節流直接操作,在它被關閉的時候,它的內容自動寫入硬盤上的相應字節流。
復制一個文件的基本思路是:逐一讀取原文件流的字節,逐一寫入新文件流中。分別用到文件流的ReadByte()和WriteByte()方法。這里要注意的是,讀取時以字節為單位,一個字節如下圖所示

C#使用FileStream復制一個任意文件

是一個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.

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女