C#中關於文件流【IO】的操作


Asp.Net中文件操作類,命名空間位於System.IO下。

關於文件夾的操作類Directory 

string tPath="C:\Log\";
string tMovePath="C:\Move\";
   if (!Directory.Exists(LogPath))
                {
                    DirectoryInfo directoryInfo = Directory.CreateDirectory(tPath);//一次性創建全部的路徑
                    Directory.Move(tPath, tMovePath);//移動, 相當於剪切操作
                    Directory.Delete(tMovePath);//刪除
                }

文件操作類File

//tips:寫入為.WriteLine("xxx")都是每次寫入一行
 string fileName = Path.Combine(tPath, "text.txt");
                string fileNameCopy = Path.Combine(tPath, "textCopy.txt");
                string fileNameMove = Path.Combine(tPath, "logMove.txt");
                bool isExists = File.Exists(fileName);
                if (!isExists)
                {
                    Directory.CreateDirectory(tPath);//只有創建文件夾之后,才能創建里面的文件,不然會報錯
                    using (FileStream fileStream = File.Create(fileName))//打開文件流 (創建一個文件並寫入)
                    {
                        string name = "test";
                        byte[] bytes = Encoding.Default.GetBytes(name);
                        fileStream.Write(bytes, 0, bytes.Length);
                        fileStream.Flush();
                    }
                    using (FileStream fileStream = File.Create(fileName))//打開文件流 (創建文件並寫入、這種會覆蓋之前的內容)
                    {
                        StreamWriter sw = new StreamWriter(fileStream);
                        sw.WriteLine("test2");
                        sw.Flush();
                    }

                    using (StreamWriter sw = File.AppendText(fileName))//流寫入器(創建/打開文件並寫入,這是以追加的方式寫入文檔末尾,並不會覆蓋之前的文字信息,寫入方式為一行一行的寫入)
                    {
                        string tips= "我不會覆蓋之前的內容,只是已追加的方式寫入文件,並且以一行一行的方式寫入文件";
                        sw.WriteLine(tips);
                        sw.Flush();
                    }
                    using (StreamWriter sw = File.AppendText(fileName))//流寫入器(創建/打開文件並寫入,是以字節流的方式寫入文檔末尾,也不會覆蓋之前的文字信息)
                    {
                        string name = "我也不會覆蓋";
                        byte[] bytes = Encoding.Default.GetBytes(name);
                        sw.BaseStream.Write(bytes, 0, bytes.Length);
                        sw.Flush();
                    }

            //讀取文件內容,這種讀取方式如果遇到比較大的文件時。可能會卡死哦。最好的辦法是就按照指定的字節讀取文件中的內容,我們讀取的文件都是存放到內存中的,如果文件過大,內存直接爆掉,有興趣的小盆友可以試試打開一個30M的字典文件看一看噢!
                    foreach (string result in File.ReadAllLines(fileName))
                    {
                        Console.WriteLine(result);
                    }
                    string sResult = File.ReadAllText(fileName);
                    Byte[] byteContent = File.ReadAllBytes(fileName);
                    string sResultByte = System.Text.Encoding.UTF8.GetString(byteContent);

 

File.Copy(fileName, fileNameCopy);//復制
File.Move(fileName, fileNameMove);//剪切
File.Delete(fileNameCopy);//刪除
File.Delete(fileNameMove);//

如何獲取一個文件夾的信息:FileInfo

 FileInfo fileInfo = new FileInfo("文件夾路徑");
                Console.WriteLine($"{fileInfo.FullName},{fileInfo.CreationTime},{fileInfo.LastWriteTime}");

獲取電腦驅動信息:DriveInfo

 DriveInfo[] drives = DriveInfo.GetDrives();

                foreach (DriveInfo drive in drives)
                {
                    if (drive.IsReady)
                        Console.WriteLine("類型:{0} 卷標:{1} 名稱:{2} 總空間:{3} 剩余空間:{4}", drive.DriveType, drive.VolumeLabel, drive.Name, drive.TotalSize, drive.TotalFreeSpace);
                    else
                        Console.WriteLine("類型:{0} ", drive.DriveType);
                }

如何拼接文件路徑:Path.Combine

//這樣可以將兩個字符串自動拼接成為一個文正的文件路徑
Path.Combine(tPath, "info.txt")

 PS:在下新人,若有錯誤,還請各位指出~~~


免責聲明!

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



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