1. 程式人生 > >C#高階篇-File 檔案操作相關

C#高階篇-File 檔案操作相關

1.檢視檔案資料夾的資訊

通過FileInfo類獲取檔案相關資訊

static void Main(string[] args)
        {
            //相對路徑:找當前程式的檔案路徑
            //絕對路徑:加上檔案完整的路徑名
            FileInfo fileInfo = new FileInfo(@"F:\unity project\C sharp 高階篇\檔案操作\bin\Debug\TextFile1.txt");

            Console.WriteLine(fileInfo.Exists);//判斷該檔案是否存在
            Console.WriteLine(fileInfo.Name);//檔名.字尾
            Console.WriteLine(fileInfo.Directory);
            Console.WriteLine(fileInfo.Length);
            Console.WriteLine(fileInfo.IsReadOnly);
            Console.ReadKey();
        }

通過CopyTo將檔案複製到當前目錄下

            //將檔案複製到當前目錄下
            fileInfo.CopyTo("t.txt");

建立檔案

FileInfo fileInfo = new FileInfo("none.txt");
            if(fileInfo.Exists == false)
            {
                fileInfo.Create();//建立當前檔案
            }

重新命名操作

FileInfo fileInfo = new FileInfo("none.txt");
            fileInfo.MoveTo("yeap.txt");//相當於重新命名操作

2.檔案的讀寫

通過一行一行的讀取,將讀取的內容存放在一個string[]中

string[] strArray = File.ReadAllLines("IOtext.txt");
            foreach (string temp in strArray)
            {
                Console.WriteLine(temp);
            }

通過ReadAllText方法,將文字儲存到一個text檔案中

string s = File.ReadAllText("IOtext.txt");
            Console.WriteLine(s);

讀取byte的資料

byte[] byteArray = File.ReadAllBytes("pic.jpg");
            foreach (var b in byteArray)
            {
                Console.Write(b);
            }

File檔案的寫入和讀取是相對應的

File.WriteAllText("textfile2.txt", "hello 中國");

            File.WriteAllLines("textfile3.txt", new string[] { "frist line", "aaaall", "一句話" });

使用FileStream來進行檔案的讀取

//1.建立檔案流 用來操作檔案
            FileStream stream = new FileStream("TextFile1.txt", FileMode.Open);

            //2.讀取或者寫入資料
            byte[] data = new byte[1024];
            //1 byte = 1位元組 1024byte = 1kb
            int length = stream.Read(data,0,data.Length);
            for(int i = 0; i < length; i++)
            {
                Console.Write(data[i] + " ");
            }

3.StreamReader和StreamWriter讀寫文字檔案

通過StreamReader讀取檔案,使用ReadLine()方法

//建立文字檔案讀取流
            StreamReader reader = new StreamReader("test.txt");

            while (true)
            {
                string str = reader.ReadLine();
                if(str == null)
                {
                    break;
                }
                Console.WriteLine(str);
            }

使用ReadToEnd()方法,直接讀取文字中的全部data儲存到一個string中

string str = reader.ReadToEnd();//讀取到文字的結尾
            Console.WriteLine(str);

            reader.Close();

使用Read()方法,每次讀取一個字元。當文字沒有資料的時候返回-1

while (true)
            {
                int res = reader.Read();
                if(res == -1)
                {
                    break;
                }
                else
                {
                    Console.Write((char)res);
                }
            }

使用StreamWriter寫入資訊

StreamWriter writer = new StreamWriter("textfile2.txt");
            while (true)
            {
                string message = Console.ReadLine();
                if(message == "q")
                {
                    break;
                }
                //writer.Write(message);//寫入一個字串
                writer.WriteLine(message);//寫入一個字串並換行
            }

            writer.Close();