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:在下新人,若有错误,还请各位指出~~~

posted @ 2018-08-16 10:48  时幽  阅读(2465)  评论(0编辑  收藏  举报