1. 程式人生 > >C#FileStream檔案流(字元)

C#FileStream檔案流(字元)

使用FileStream需要匯入名稱空間:using System.IO;

將建立檔案流物件的過程寫在using當中,會自動的幫助我們釋放流所佔用的資源。

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            //使用FileStream來讀取資料(傳入引數為:檔案所在路徑,對檔案的操作方式,對檔案內資料的操作)
            FileStream fsRead = new FileStream(@"C:\Users\SpringRain\Desktop\new.txt", FileMode.OpenOrCreate, FileAccess.Read);
            byte[] buffer = new byte[1024 * 1024 * 5];
            //3.8M  5M
            //返回本次實際讀取到的有效位元組數
            int r = fsRead.Read(buffer, 0, buffer.Length);
            //將位元組陣列中每一個元素按照指定的編碼格式解碼成字串
            string s = Encoding.UTF8.GetString(buffer, 0, r);
            //關閉流
            fsRead.Close();
            //釋放流所佔用的資源
            fsRead.Dispose();
            Console.WriteLine(s);
            Console.ReadKey();

            //使用FileStream來寫入資料
            using (FileStream fsWrite1 = new FileStream(@"C:\Users\SpringRain\Desktop\new.txt", FileMode.OpenOrCreate, FileAccess.Write))
            {
                string str = "看我遊牧又把你覆蓋掉";
                byte[] buffer1 = Encoding.UTF8.GetBytes(str);
                fsWrite1.Write(buffer1, 0, buffer1.Length);
            }
            Console.WriteLine("寫入OK");
            Console.ReadKey();
        }
    }
}

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            //思路:就是先將要複製的多媒體檔案讀取出來,然後再寫入到你指定的位置
            string source = @"C:\Users\SpringRain\Desktop\1、複習.wmv";
            string target = @"C:\Users\SpringRain\Desktop\new.wmv";
            CopyFile(source, target);
            Console.WriteLine("複製成功");
            Console.ReadKey();
        }

        public static void CopyFile(string soucre, string target)
        {
            //1、我們建立一個負責讀取的流
            using (FileStream fsRead = new FileStream(soucre, FileMode.Open, FileAccess.Read))
            {
                //2、建立一個負責寫入的流
                using (FileStream fsWrite = new FileStream(target, FileMode.OpenOrCreate, FileAccess.Write))
                {
                    byte[] buffer = new byte[1024 * 1024 * 5];
                    //因為檔案可能會比較大,所以我們在讀取的時候 應該通過一個迴圈去讀取
                    while (true)
                    {
                        //返回本次讀取實際讀取到的位元組數
                        int r = fsRead.Read(buffer, 0, buffer.Length);
                        //如果返回一個0,也就意味什麼都沒有讀取到,讀取完了
                        if (r == 0)
                        {
                            break;
                        }
                        fsWrite.Write(buffer, 0, r);
                    }
                }
            }
        }
    }
}