C#中的文件流學習筆記第一篇


   前言:這篇博客我主要說一下C#中文件流的使用規則,也是從最基礎上面去說,也相信我們大家只要是干Web行業的這些知識點肯定能用上,其中介紹幾個操作文件流的類,Path類,FileStream類,Read和Write方法的使用

  1. Path

(1) 文件路徑有什么特征?

            1)[根目錄:\]文件夾\文件名.后綴名

(2)合並路徑   Combine

      string p4 = Path.Combine(@"c:\123a\abc\", "白天不懂夜的黑.mp3");

       string p5 = Path.Combine(@"c:\123a\abc", "白天不懂夜的黑.mp3");

(3)獲得文件夾的路徑  GetDirectoryName

            string p2 = Path.GetDirectoryName(path);

(4)得到全路徑 GetFullPath

            string full = Path.GetFullPath("1.txt");

(5)得到后綴名 GetExtension

            string p3 = Path.GetExtension(path);

(6)得到文件名 GetFileName

            string p6 = Path.GetFileName(path);

(7)更改文件后綴名 ChangeExtension

            string path = @"c:\HYL\CS\File\Exise.avi";

            string p1= Path.ChangeExtension(path, "rmvb");

(8)返回臨時文件夾   GetTempPath

            string s= Path.GetTempPath();

2. FileStream(文件流),專門將文件以字節流的形式進行處理

(1)父類Stream(流)

     (2)使用文件流,無非就是讀取和寫入文件

            ->讀取文件,就必須想辦法打開文件,使用構造方法

static void Main(string[] args)

{

                          using (FileStream fileRead = new FileStream(@"F:\heima\practice\總復習\文件流的讀取\bin\Debug\SqlHelper.txt", FileMode.Open, FileAccess.Read))

         {

                    int num;

                    while ((num = fileRead.ReadByte()) != -1)

                    {

                            Console.Write((char)num);

                     }

                    Console.ReadKey();

        }

 }

     (3)使用Writer創建文件並且寫入信息: 

static void Main(string[] args)

{

            using (FileStream fileWriter = new FileStream("file.txt", FileMode.Create, FileAccess.Write))

            {

                Console.WriteLine("請輸入信息");

                string str = Console.ReadLine();

                byte[] bs = Encoding.Default.GetBytes(str);

                for (int i = 0; i < bs.Length; i++)

                {

                    fileWriter.WriteByte(bs[i]);

                }

            }
}   

     (4)自己手動書寫一個ACSII碼表,不需要百度了,只要我們程序員有計算機

static void Main(string[] args)

{

            List<string> list = new List<string>();

            list.Add("<body>");

            for (int i = 0; i < 128; i++)

            {

                list.Add(string.Format("子符  <font size=\"7\" color=\"red\">{0}</font>  的ASCII碼為  <font size=\"7\" color=\"red\">{1}</font>  <br/>", (char)i, i));

            }

            list.Add("</body>");

            File.WriteAllLines("ASCII.html", list.ToArray(), Encoding.Default);

}

      

  1. FileStream

    (1) ReadByte() 讀取一個字節,返回對應的直接表示數字的十進制形式

    (2)WriteByte() 可以寫一個字節

    (3)復制文件,對文件加密,解密

 static void Main(string[] args)

        {

            //對文件進行一個簡單加密

            using (FileStream fileRead = new FileStream("夢想的力量.mp3", FileMode.Open, FileAccess.Read))

            {

                using (FileStream fileWrite = new FileStream("夢想.mp3", FileMode.Create, FileAccess.Write))

               {

                    int num = -1;

                    while ((num = fileRead.ReadByte()) != -1)

                    {

                        num++;

                        fileWrite.WriteByte((byte)num);

                   }

                    Console.WriteLine("OK");

                }

            }

            //對上面加密的文件進行解密

            using (FileStream fileRead = new FileStream("夢想.mp3", FileMode.Open, FileAccess.Read))

      {

                using (FileStream fileWrite = new FileStream("夢想_解密.mp3", FileMode.Create, FileAccess.Write))

                {

                    int num = -1;

                    while ((num = fileRead.ReadByte()) != -1)

                    {

                        num--;

                        fileWrite.WriteByte((byte)num);

                    }

                    Console.WriteLine("OK");

                }

            }

 }
  1. Read和Write的使用

(1) Read(存放數據的byte數組,從數組的第一號位置開始放數據,取出多少數據)

(2)一般情況使用的時候 Read(數組名,0,數組名.Length);

static void Main(string[] args)

{

            //讀取文件流

            byte[] bs=new byte[10];

            using (FileStream fileRead = new FileStream("file.txt", FileMode.Open, FileAccess.Read))

            {

                //Read(存放數據的byte數組,從數組的第一號位置開始放數據,取出多少數據)

                //一般情況使用的時候 Read(數組名,0,數組名.Length);

                int count = 0;

                while ((count = fileRead.Read(bs, 0, bs.Length))>0)

                {

                    for (int i = 0; i < count; i++)

                    {

                        Console.WriteLine((char)bs[i]);

                    }

                }

            }

            //寫流

            using(FileStream fileWrite=new FileStream("file.txt",FileMode.Create,FileAccess.Write))

            {

                byte[] bs = { 0, 97, 98, 99, 48, 49 };

                fileWrite.Write(bs, 1, bs.Length - 1);

            }

}

(3)使用Write和Read復制文件

            1)語法實現

                   using(fileRead)

                   {

                          using(fileWrite)

                          {

                                 byte[] bs=new byte[10*1024*1024];

                                 int count=0;

                                 while((count=fileRead.Read(bs,0,bs.Length))>0)

                                 {

                                        fileWrite.Write(bs,0,count);

                                 }

                          }

                   }

  1. 使用命令行參數控制程序,實現控制台程序的模仿copy

(1) 首先新建一個控制台應用程序,起名隨便,然后寫入如下代碼:

 static void Main(string[] args)

{

            //保證給的參數只有兩個

            if (args.Length != 2)

            {

                Console.WriteLine("命令語法不正確");

                return;

            }

            //得到文件的路徑

            string file1 = args[0];

            string file2 = args[1];

            //判斷第一個文件是否存在

            try

            {

                using (FileStream fileRead = new FileStream(file1, FileMode.Open, FileAccess.Read))

                {

                    using (FileStream fileWrite = new FileStream(file2, FileMode.Create, FileAccess.Write))

                    {

                        byte[] bs = new byte[10 * 1024];

                        int count = 0;

                        while ((count = fileRead.Read(bs, 0, bs.Length)) > 0)

                        {

                            fileWrite.Write(bs, 0, count);

                        }

                        Console.WriteLine("以復制\t\t1個文件");

                    }

                }

            }

            catch

            {

                Console.WriteLine("系統找不到指定文件");

            }

}

(2)然后運行程序,找到Debug文件夾下面的exe文件,復制一個備份,起名為hylcopy.exe

(3)將這個文件復制到C:\Windows這個目錄下面,然后啟動cmd命令

(4)輸入的信息如圖所示:

    

下篇博客再說一下一些其他的流文件,讀寫流StreamReader和StreamWriter方法,還有File類和Directory類。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM