簡單記錄一下
1. Fileinfo和Directoryinfo
對於文件和文件夾的操作,Fileinfo和Directoryinfo是對文件和文件夾進行一些屬性類的操作,比如文件的創造,移動,刪除,重建,是不能對文件里面具體的內容進行操作的。
FileInfo 類 fileinfo類是對於文件的操作,
FileInfo strint = new FileInfo(str.ToString()); if (!strint.Exists ) //如果不存在 就創建 { strint.Create(); }
下面是directoryinfo類主要是對文件夾進行操作
DirectoryInfo dirinfo = new DirectoryInfo(@"D:\text"); //獲取其父目錄; if (!dirinfo.Exists) //如果該文件夾不存在,則新建一個該文件夾 { dirinfo.Create(); } dirinfo.CreateSubdirectory("這是子目錄");
這兩個類來讀取文件和文件夾屬性,在這兩個類中主要是用來查看文件的基本屬性,創建或者移動文件,判斷路徑是否存在等,這兩個類都是在 System.IO類下的,使用他們之前需要先using一下。fileinfo和directoryinfo類就是一般的對文件和文件夾的操作,包括讀取信息啊,進行文件夾的復制和刪除,創建等。這兩個類都是非靜態類在使用時,需要進行實例化。
2. File和Filestream
一般file類的操作對象是文本文件,而filestream類的操作是非文本文件用的比較多。如果文件太大,則用file類處理會很慢,這時用Filestream 數據流類就比較適合讀文件較大的文件
首先是File
string str = File.ReadAllText(""); //輸入一個相對路徑,返回的是一個字符串型,是一行一行的讀取輸出;ReadAllText Debug.Log(str); byte[] str1 = File.ReadAllBytes(""); //這是讀取文件的內容,返回的是字節形式的數組;ReadAllBytes foreach (var aa in str1) //遍歷方式讀取數組中的內容; { Debug.Log(aa); } byte[] str2 = File.ReadAllBytes("圖片.png"); //讀取一個圖片,結果以字節的形式返回在一個數組內;ReadAllBytes foreach (var item in str2) { Debug.Log(item); }
File 的寫入操作
// 寫入操作 File.WriteAllText("寫入的文件.txt", "這是寫入的內容"); //在默認輸出路徑下,創建一個txt文件,並且在其中寫入以上內容; File.WriteAllLines("新的文件", new string[] { "qwe", "wer" }); //在默認輸出路徑下創建一個新的txt文件,並且在其中寫入數組元素; byte[] arr = File.ReadAllBytes("圖片.png"); //首先將圖片的字節存儲在字節數組中; File.WriteAllBytes("這是圖片.png", arr);
FileStream類 讀的操作
//讀的操作 FileStream feadt = new FileStream("TextFile1.txt", FileMode.Open); //實例化數據流,對文件的操作是打開; byte[] arrt = new byte[1024]; //定義一個1024字節的數組,用於數據存儲;\ while (true) { int len = feadt.Read(arr, 0, arr.Length); //從流中讀取數據塊並把它放在定義好的數組中,返回的該文件的真實長度; //讀入緩沖區中的總字節數。如果當前的字節數沒有所請求那么多,則總字節數可能小於所請求的字節數;或者如果已到達流的末尾,則為零 if (len == 0) { Debug.Log("lol"); break; } for (int i = 0; i < len; i++) { Debug.Log(arr[i] + " "); } }
FileStream類 讀寫的操作
//實例化一個讀操作,目標文件是該默認輸出文件的圖片; FileStream fsread = new FileStream("123.png", FileMode.Open); //實例化一個寫操作,這里是創建一個文件,用來寫入數據; FileStream fswrite = new FileStream("456.png", FileMode.Create); //定義一個2M的字節存儲空間; byte[] arrt = new byte[1024 * 1024 * 2]; while (true) { int len = fsread.Read(arrt, 0, arr.Length); //實際的文件大小; if (len == 0) { Debug.Log("HAO D"); break; } fswrite.Write(arr, 0, len); //將數組中的數據寫入目標位置; } fsread.Close(); fswrite.Close(); //關閉數據流;
3.streamreader,這是對文件內部數據的讀操作:
StreamReader sread = new StreamReader("TextFile1.txt"); //創建一個實例對象,所要讀取的文件時TEXE文件; while (true) { string strin = sread.ReadLine(); //該方法返回的時一行,就是執行一次返回一行; if (strin == null) {//如果讀取到文件的最后,則是null Debug.Log("lol"); break; } Debug.Log(str); }
4.streamweiter類,就是寫入數據流:
StreamWriter swrit = new StreamWriter("TEXT2.txt"); //創建一個寫數據流,寫的數據流寫入的時默認路徑下面的文件; while (true) { string strin = "lol"; //用戶輸入需要寫的數據; if (strin == "lol") { break; } swrit.Write(str); } swrit.Close();
對文件的其他操作,判斷存不存在
//1.判斷指定路徑內是否有指定文件夾-Directory.Exists if (System.IO.Directory.Exists() { Debug.Log("文件夾已經存在"); } else { Debug.Log("文件夾不存在"); } //2.判斷指定路徑內是否有指定文件- File.Exists if (System.IO.File.Exists() { Debug.Log("文件已經存在"); } else { Debug.Log("文件不存在"); }
有需要會在補充