c#文件操作(读写)

使用FileInfo对文件进行操作

          //相对路径:就是找当前程序所在的路径
          FileInfo fileInfo = new FileInfo("TextFile1.txt");
          //绝对路径:加上文件完整的路径名
          FileInfo fileInfo2 = new FileInfo(@"C:\Users\devsiki\Documents\Visual Studio 2012\Projects\学习")

//FileInfo常用方法
            Console.WriteLine(fileInfo.Exists);//判断该文件是否存在

            Console.WriteLine(fileInfo.Name);//文件名.后缀

            Console.WriteLine(fileInfo.Directory);//取得文件所在路径,不包含文件名

            Console.WriteLine(fileInfo.Length);//文件的大小(单位字节)

            Console.WriteLine(fileInfo.IsReadOnly);//文件是否是只读的
            fileInfo.Delete();//默认删除输出目录的文件
            fileInfo.CopyTo("tt.txt");//复杂文件内容到指定文件
//创建文件
            FileInfo fileInfo3 = new FileInfo("siki.txt");
            if (fileInfo3.Exists == false)//如果当前文件不存在
            {
                fileInfo.Create();//创建当前文件
            }
            fileInfo3.MoveTo("siki2.txt");//重命名操作 

使用DirectoryInfo操作文件夹

            //文件夹操作(目录操作) (按照完整路径名创建)
            DirectoryInfo dirInfo = new DirectoryInfo(@"C:\Users\devsiki\Documents\Visual Studio 2012\Projects\学习csharp编程 高级篇\026-文件操作-查看文件和文件夹信息\bin\Debug");//查看Debug文件夹的信息

//文件夹常用操作方法
            Console.WriteLine(dirInfo.Exists);//目录是否存在
            Console.WriteLine(dirInfo.Name);//文件夹的名字
            Console.WriteLine(dirInfo.Parent);//当前文件目录的上一级目录名
            Console.WriteLine(dirInfo.Root);//当前文件夹的根目录
            Console.WriteLine(dirInfo.CreationTime);//当前文件夹的创建时间
            dirInfo.CreateSubdirectory("siki");//在子文件夹创建为siki的文件夹


//创建文件夹
            DirectoryInfo dirInfo = new DirectoryInfo("test");
            if (dirInfo.Exists == false)
            {
                dirInfo.Create();//创建目录
            }

注意:如果使用默认路径是生成路径,而不是项目路径,VS一般默认在Debug文件夹下,所以注意需要读取的文件位置

使用File读写文件

读取文本文件内容

//使用File类直接读取文件里面的内容
            string[] strArray = File.ReadAllLines("TextFile1.txt");//读取文件,把每一个行文本读取成一个字符串,最后组成一个字符串的数组
            foreach (var s in strArray)
            {
                Console.WriteLine(s);
            }
string s = File.ReadAllText("TextFile1.txt");//直接读取成一个字符串,换行符什么的直接读取.

读取其他文件,比如图片

//其他文件基本上都是读取成字节存储的
            byte[] byteArray = File.ReadAllBytes("3.LINQ.png");
            foreach (var b in byteArray)
            {
                Console.Write(b);
            }

写入文件

            //写入字符串
            File.WriteAllText("textfile2.txt", "hello sdf中国");
            //写入字符串数组,会自动换行
            File.WriteAllLines("textfile3.txt",new string[]{" sdfsdflk","213412","流口水的减肥"});
            //把读取到的文件写入到另一个地方使用字节数组
            byte[] data = File.ReadAllBytes("3.LINQ.png");
            File.WriteAllBytes("4.png",data);

使用FileStream读写文件(字节流)

一般使用FileStream完成二进制文件的读写,比如视频和图片等

            //1,创建文件流 用来操作文件,FileMode是一个枚举表示这个文件的打开方式
            FileStream stream = new FileStream("TextFile1.txt",FileMode.Open);

            //2, 读取或者写入数据
            byte[] data = new byte[1024];//数据容器
            //1 byte = 1字节  1024byte=1KB 1024KB=1MB 1024MB = 1GB 1024GB=1T
            while (true)//循环读取大文件的内容
            {
                int length = stream.Read(data, 0, data.Length);
                if (length == 0)//如果读取到文件末尾,就会返回0
                {
                    Console.WriteLine("读取结束");
                    break;
                }
               //for (int i = 0; i < length; i++)
               // {
               //    Console.Write(data[i] + " ");
               // }
            }

下面我们使用FileStream来完成一个图片的复制

           FileStream readStream = new FileStream("3.LINQ.png",FileMode.Open);//创建读取的FileSrtream

            FileStream writeStream = new FileStream("LINQ副本.png",FileMode.Create);//创建写入的FileStream

            byte[] data = new byte[1024];

            while (true)
            {
                int length = readStream.Read(data, 0, data.Length);
                if (length == 0)
                {
                    Console.WriteLine("读取结束");
                    break;
                }
                else
                {
                    writeStream.Write(data,0,length);   
                }
            }

            writeStream.Close();
            readStream.Close();

使用StreamReader和StreamWriter读写文本文件

读取文本文件

            //创建文本文件读取流
            StreamReader reader = new StreamReader("TextFile1.txt");
            //按行读取
                while (true)
            {
                string str = reader.ReadLine();//读取一行字符串,读取到末尾返回null
                if (str == null) break;
                Console.WriteLine(str);
            }
            //直接读取
            string str = reader.ReadToEnd();//读取到文本的结尾(读取文本中所有的字符)

            //按照字节读取
            while (true)
            {
                int res = reader.Read();//读取字节,读取到末尾返回-1
                if (res == -1)
                {
                    break;
                }
                else
                {
                    Console.Write((char)res);
                }

            }
            reader.Close();

写入文本文件


            //文本文件写入流
            StreamWriter writer = new StreamWriter("textfile2.txt");//如果文件存在,那么文件会被覆盖,不存在就创建
            while (true)
            {
                string message = Console.ReadLine();
                if (message == "q")//如果输入q就会换行
                    break;
                //writer.Write(message);//写入一个字符串
                writer.WriteLine(message);//写入一个字符串并换行
            }
            writer.Close();

猜你喜欢

转载自blog.csdn.net/qq_41056203/article/details/81003439