File类和各种类型流操作
(1.File类是一个静态类,支持对文件的基本操作,包括创建,拷贝,移动,删除和打开.File类方法的惨输很多时候是路径path.主要提供和文件有关的各种操作.在使用的时候需要 引用System.IQ命名空间.
(2.FileStream文件流只能处理原始字节(raw byte).FileStream类可以用于任何数据文件,而不仅仅是文本文件.FileStream对象可以用于读取诸如图像和声音的文件,FileStream读取出来的是字节数组,然后用个编码将字节数组转换成字符串
(3.区别:File是一个文件的类,对文件进行操作的;FileStream文件流对txt,xml等内容的时候需要使用的一个工具,比喻:file是笔记本,需要FileStream这个笔才能写
1.File常用方法
File.Open("路径",访问权限);
File.Create("路径及文件名");
File.Copy("要复制的文件","赋值新文件的路径和名称,不写路径会保存到软件目录下",Bool是否允许覆盖原文件)
File.Delete("要删除的文件路径");
File.Exists("判断指定路径是否存在");
File.Move("需要移动的文件名及路径","新文件的文件名及路径");
File.Replace("需要移动和替换的文件","被替换的文件","被替换文件的备份");
File.AppendAllText("需要添加内容的文件路径(若无该文件就创建新文件)","需要添加的内容");
File.ReadAllText("要打开并读取的文件名及路径",Encoding字符编码);
2.FileStream文件流
FileStream类通常用来读写磁盘文件.常用于向磁盘存储或读取配置文件
(1) 读取:
FileStream 名字=new FileStream(文件路径,FileModel确定你是要打开还是创建文件,FileAccess确定文件的访问方式 只读?);
(2)也可使用另一种方式实例化文件流:
FileStream 名字=new File(文件路径,FileModel确定你是要打开还是创建文件,FileAccess确定文件的访问方式 只读?);
byte[] 数组名字=new byte[大小];
名字.Read(数组名字,从哪开始,读取长度);
名字.Close();关闭流
string 变量名=Encoding.编码.GetString(数组名);
(3)写入文件:
ileStream 名字=new FileStream(文件路径,FileModel确定你是要打开还是创建文件,FileAccess确定文件的访问方式 只读?);
(4)也可使用另一种方式实例化文件流:
FileStream 名字=new File(文件路径,FileModel确定你是要打开还是创建文件,FileAccess确定文件的访问方式 只读?);
byte[] 数组名字=Encoding.编码.GetBytes(字符串);
名字.Write(数组名,从哪开始,长度);
名字.Close();关闭流
3.NetWorkStream网络流
NetWorkStream类是专门用来处理服务器与客户端通信的流.它在网络编程中经常使用,主要是用来处理类似Socket,TcpClient和 TcpListener这些类中得到的流。
使用示例
(1)服务端:
TcpListener 名字=new TcpListener(本地IP,端口号);//服务监听
名字.Strat();//启动
Socket socklis.AcceptSocket();阻塞,直到有客户端连接
NetWorkStream 流名称=new NetWorkStream(名字);
if( 流名称.DataAvailable)如果客户端发送了消息
{
byte[] 数组名= new byte[长度]
int int变量名=流名称.Read(数组名,从哪开始,长度);
string 变量名=Encoding.编码.GetString(数组名,从哪开始,int变量名);
}
(2)客户端:
TcpClinet 名字=new TcpClinet();
名字.connect(“服务器IP”,端口);
NetWorkStream 流名称=名字.GetStream();//得到网络流
byte[] 数组名=名字.client.GetBytes(“内容”);//把需要输入的字符串转为字节
流名称.Write(数组名,从哪开始,长度)写入流
流名称.Flush();//刷新流中的数据
流名称.Close();关闭流
4.MemoryStream内存流
MemoryStream类主要用于操作内存中的数据.比如网络中传输数据时可以用流的形式,当我们收到这些流数据时就可以声明MemoryStream类来存储并且处理它们.
MemoryStream操作字符串:
写入流
string 变量名="内容";
byte[] 数组名=Encoding.编码.GetBytes(变量名);将字符串转化为字节数组
MemoryStream 流名称=new MemoryStream(数组名);初始化
读取
byte[]数组名=流名称.ToArray();将内存中的数据转换为字节数组
string 变量名=Encoding.编码.GetString(数组名);将字节转换为字符串
5.StreamReader/StreamWriter
StreamReader.StreamWriter主要用来处理流数据.他们分别提供了高效的流读取和写入功能
读取:
StreamReader读取
StreamReader 名字=new StreamReader(@"读取的文件路径或流",Encoding编码);
string 变量名=名字.ReadLine();从流中读取一行 名字.ReadToEnd()读取全部
名字,Close();关闭流.
写入
StreamWrite写入
StreamWrite名字=newStreamWrite(@"读取的文件路径或流",Encoding编码);
名字.Write(内容);写入一行
名字.Close();
6.TextReader/TextWriter
TextReader/TextWriter类主要用来处理流数据.他们分别提供了高效的文本流读取/写入功能.
TextReader 读取名字=new StringReader("读取内容");初始化读取流
TextWriter 写入名字=new StringWriter();初始化写入流
char[]数组名=new char[长度];
int 变量名=0;
while((char=读取名字.Reader(数组名,从哪开始,长度))>0)吧流中数据写到字符数组中 读取流中数据
{
写入名,Write(数组,从哪开始,长度);从字符数组中读取流
}
string 变量名=写入名字.Tostring();将流中数据写到字符串中
写入名字.Close(); 关闭流
读取名字.Close();