C#学习第十天 文件操作、文件流

来源:互联网 发布:如何登录淘宝账户 编辑:程序博客网 时间:2024/05/25 08:15

一、Path类

Path类是静态类,在命名空间IO中,专门用来处理路径一类的;Path能实现的功能,字符串也能实现,只是Path提供方便简洁的方法:

Console.WriteLine(Path.GetFileName(str)); //快速获得文件名Console.WriteLine(Path.GetFileNameWithoutExtension(str)); //快速获得不包括后缀的文件名Console.WriteLine(Path.GetExtension(str)); //快速获得文件名Console.WriteLine(Path.GetDirectoryName(str)); //快速获得文件所在的文件夹Console.WriteLine(Path.GetFullPath(str)); //快速获得文件所在的全路径Console.WriteLine(Path.Combine(@"D:\360Downloads\HotFix\","一路有你.wav")); //将两个字符串组合成路径


二、File类:

File类也是静态类,用来处理文件,编辑读写等

优点:方便快捷;   缺陷:只能读写小文件

File.Create(@"C:\Users\tufeiax\Desktop\new.txt");Console.WriteLine("创建成功");删除一个文件(彻底删除,不会到回收站)File.Delete(@"C:\Users\tufeiax\Desktop\new.txt");Console.WriteLine("删除成功");//复制一个文件File.Copy(@"C:\Users\tufeiax\Desktop\new.txt",@"C:\Users\tufeiax\Desktop\123.txt");Console.WriteLine("复制成功");

1、读文件:

1)ReadAllBytes:当文件不是文本形式,而是音乐、视频等文件时,需要使用此方法

//读取文件,转成字节数组,返回字节数组byte[] buffer = File.ReadAllBytes(@"F:\学习\C#\视频\传智播客视频学习\3.2014年 .Net基础\下载必看.txt");//将字节数组中的每一个元素按照我们指定的编码格式解码成字符串.UTF-8 GB2312  GBK ASCIIstring s = Encoding.Default.GetString(buffer);

2)ReadAllLines:需要单独操作每一行时选用

string[] str = File.ReadAllLines(@"C:\Users\tufeiax\Desktop\new.txt",Encoding.Default);foreach(string item in str)Console.WriteLine(item);
3)ReadAllText:读取所有文本中所有数据时选用

string str = File.ReadAllText(@"C:\Users\tufeiax\Desktop\new.txt",Encoding.Default);Console.WriteLine(str);

2、写文件:与读文件对应

1)WriteAllBytes:

//写文件,如果没有此方法会创建,如有则覆盖string str = "人生得意须尽欢"; //写之前需将字符串转换成字节数组byte[] b = Encoding.Default.GetBytes(str);File.WriteAllBytes(@"C:\Users\tufeiax\Desktop\new.txt",b);
2)WriteAllLines

3)WriteAllText

以上三种方法,如果该路径没有这个文件,则新建并写入,如果有这个文件,则覆盖原数据


3.追加文件:

1)AppendAllText

2)AppendText


3.文件的路径:   绝对路径和相对路径

绝对路径:文件的精确路径

相对路径:文件相对于应用程序的路径

比较: 在程序开发中,应该尽量使用相对路径


三、文件流:FileStream  ---最重要的文件操作类,因为可以处理大文件,可以处理字节(可以处理所有文件)

FileStream相对于File来说,方法更多更全面,适合大文件操作(几百k以上),可以控制读取和写入的量,不会太耗费内存

FileStream(String, FileMode, FileAccess):

1. 读取数据

第一步创建对象:

FileStream fsRead = new FileStream(@"C:\Users\tufeiax\Desktop\123.txt",FileMode.OpenOrCreate,FileAccess.Read);
第二步设置每次读写大小:

byte[] buffer = new byte[1024 * 10245 * 5];//每次读取5M (耗费内存的大小)
第三部操作数据:

读取

int r = fsRead.Read(buffer,0,buffer.Length); //返回本次实际读取到的有效字节数

第二个参数是开始读取文件的位置,第三个参数是读取长度
解码

//将字节数组中每一个元素按照指定的编码格式解码成字符串形式string s = Encoding.Default.GetString(buffer,0,r);//第二个参数是解码位置,第三个解码个数

第四步、关闭流,释放资源

fsRead.Close(); //关闭文件流fsRead.Dispose(); //释放流所占的资源

自动释放资源方法:

将创建文件流对象的过程写在using当中,会自动的帮助我们释放流所占用的资源

2、写入数据:

using(FileStream fsWrite = new FileStream(@"C:\Users\tufeiax\Desktop\123.txt",FileMode.OpenOrCreate,FileAccess.Write)){string str = "看我有没有把你覆盖掉";byte[] buffer = Encoding.Default.GetBytes(str);//转成字节数组fsWrite.Write(buffer,0,buffer.Length);}Console.WriteLine("写入成功");


四、StreamReader / StreamWriter

//使用StreamReader来读取一个文本文件using(StreamReader sr = new StreamReader(@"C:\Users\tufeiax\Desktop\123.txt",Encoding.Default)){while(!sr.EndOfStream) //判断是否读到文件末尾Console.WriteLine(sr.ReadLine()); //读取一行文本,sr。ReadLine()直接返回字符串}
//使用treamWriter来写入一个文本文件using(StreamWriter sw = new StreamWriter(@"C:\Users\tufeiax\Desktop\xxx.txt",true)){sw.Write("人生如梦!");}Console.WriteLine("写入成功");


















0 0