File,FileInfo,FileStream,StreamReader ,StreamWriter

File,FileInfo,FileStream 区别与联系概括的说,
File,FileInfo,FileStream 是用于文件 I/O 的类,
StreamReader,StreamWriter  是用于从流读取和写入流的类,使用之前都需 using System.IO。

FileInfo

    FileInfo 类继承于 FileSystemInfo 类,它包含下面几个方法与读取文本有关。 
    FileInfo,查看文件相关的信息,如文件的大小,名称、创建事件、修改时间、后缀、是否只读等,
同时可以进行创建、拷贝、移动、删除文件。


          方法                                                      返回值 
        
        AppendText()                                             StreamWriter
        Create()                                                 FileStream
        CreateText()                                             StreamWriter
        Open(FileMode mode)                                      FileStream
        Open(FileMode mode, FileAccess access)                   FileStream
        Open(FileMode mode, FileAccess access, FileShare share)  FileStream
        OpenRead()                                               FileStream
        OpenText()                                               StreamReader
        OpenWrite()                                              FileStream

        文本操作之前,首先使用构造函数 FileInfo(string fileName),创建一个 FileInfo 对象,构造函数的参数是文件名称,包含路径。在写文本的时候,先确定文本是否存在,如果存在的话,可以使用AppendText(),进行文本添加;如果不存在,则需要创建文本,就需要用到 Create()和 CreateText()两个方法。CreateText()返回值是 StreamWriter,可以把 CreateText()返回值赋给一个 StreamWriter对象,利用 StreamWriter 的 void Write(string value)或者 void Writeline(string value)方法来写进文本;Create()的返回值是 FileStream,可以把 Create()返回值赋给一个FileStream 对象,然后可以利用 FileStream 的写操作 void Write(byte[] array, int offset, int count)来进行写文本,此方法中第一个参数需要把一般的字符串转为字节数组,用 byte[] info = new UTF8Encoding(true).GetBytes(value),就可以得到第一个参数值。


在读文本操作时,可以用 open 几个方法,对于参数 FileMode 是枚举类型,
    CreateNew = 1, 
    Create = 2, 
    Open = 3, 
    OpenOrCreate = 4, 
    Truncate = 5, 
    Append = 6


参数FileAccess是枚举类型, 
    Read = 1,
    Write = 2, 
    ReadWrite = 3


参数 FileShare 是枚举类型,
    None = 0, 
    Read = 1, 
    Write = 2, 
    ReadWrite = 3,
    Delete = 4,
    Inheritable = 16


    返回值类型一种使 FileStream,另外一种是StreamReader,获取对象之后,可用这两种对象的读文件方法对文本进行读取。 



File 类 

File 类所包含的与读写文本有关的方法如下表所示; 

   File.ReadAllBytes   //读取所有字节                             
   File.ReadAllLines   //读取所有行,用于读取文本文件      
   File.ReadAllText    //读取所有内容,用于读取文本文件      
   File.WriteAllBytes  //写入所有字节
   File.WriteAllLines  //写入所有行,用于读取文本文件
   File.WriteAllText   //写入所有内容,用于读取文本文件

           方法名                                                                            返回值 

     AppendAllText(string path, string contents)                                                void
     AppendAllText(string path, string contents, Encoding encoding)                             void
     AppendText(string path)                                                                StreamWriter
     Create(string path)                                                                     FileStream
     Create(string path, int bufferSize)                                                     FileStream
     Create(string path, int bufferSize, FileOptions options)                                FileStream
     Create(string path, int bufferSize, FileOptions options, FileSecurity fileSecurity)     FileStream
     CreateText(string path)                                                                StreamWriter
     Open(string path, FileMode mode)                                                        FileStream
     Open(string path, FileMode mode, FileAccess access)                                     FileStream
     FileStreamOpen(string path, FileMode mode, FileAccess access, FileShare share)          FileStream
     OpenRead(string path)                                                                   FileStream
     OpenText(string path)                                                                  StreamReader
     OpenWrite(string path)                                                                  FileStream

    对于该类的前三个添加文本方法,参数不同,AppendAllText(string path, string contents)和
AppendAllText(string path, string contents, Encoding encoding),返回值都是 void,这两个方法直接添加 contents 所代表的内容,对于AppendText(string path)方法,需要创建一个StreamWriter 对象来获取该方法的返回值,通过 StreamWriter 对象的写操作,进行文本的添加。 
    同样,在写文本的时候,有两种返回值的方法,一个返回值是 FileStream,一个返回值是StreamWriter,通过 create(0 方法,可以创建指定路径下的文本文件,创建完成后,再利用返回值类型的对象的相关写方法进行写文件操作。
    读文本操作和 FileInfo 类相类似。 

 FileStream 类 


    公开以文件为主的 Stream,既支持同步读写操作,也支持异步读写操作。

    使用 FileStream 类对文件系统上的文件进行读取、写入、打开和关闭操作,并对其他与文件相关的操作系统句柄进行操作,如管道、标准输入和标准输出。读写操作可以指定为同步或异步操作。FileStream 对输入输出进行缓冲,从而提高性能。 

    FileStream 对象支持使用 Seek 方法对文件进行随机访问。Seek 允许将读取/写入位置移动到文件中的任意位置。这是通过字节偏移参考点参数完成的。字节偏移量是相对于查找参考点而言的,该参考点可以是基础文件的开始、当前位置或结 ,分别由 SeekOrigin 类的三个属性表示。


   FileStream ,以字节流的方式进行文件的读写,通常用于大文件(二进制文件)的读写,常用方法如下:

      int FileStream.Read(byte[] array,int offset,int count)
      void FileStream.Write(byte[] array,int offset,int count)


    FileStream 类读写文本主要依靠两个方法,void Write(byte[] array, int offset, int count)和 Int Read(byte[] array, int offset, int count),分别用一个例子来说明这两个方法的使用。 

读文本: 
         using (FileStream fs = File.OpenRead(path))    
         { 
             byte[] b = new byte[1024]; 
             UTF8Encoding temp = new UTF8Encoding(true); 
             while (fs.Read(b,0,b.Length) > 0)    
             { 
                 Console.WriteLine(temp.GetString(b)); 
             } 
         } 

写文本(异步): 
         FileStream fs=new FileStream("c:\\Variables.txt", FileMode.Append, FileAccess.Write, FileShare.Write); 
         fs.Close(); 
         StreamWriter sw=new StreamWriter("c:\\Variables.txt", true, Encoding.ASCII); 
         string NextLine="This is the appended line."; 
         sw.Write(NextLine); 
         sw.Close(); 
写文本(同步):        

         byte[] info = new UTF8Encoding(true).GetBytes(value); 
         fs.Write(info, 0, info.Length); 


 StreamReader 和 StreamWriter


       StreamReader和StreamWriter,通常用于对文本文件的读写,使用这个的好处时不同的文本文件有不同的编码格式,SteamReader会帮助我们自动处理,StreamWriter也可以指定写入文本的编码方式。

       TextReader 是 StreamReader 和 StringReader 的抽象基类。抽象 Stream 类的实现用于字节输入和输出,而 TextReader 的实现用于 Unicode 字符输出。 
       TextWriter 是 StreamWriter 和 StringWriter 的抽象基类。抽象 Stream 类的实现用于字节输入和输出,而 TextWriter 的实现用于 Unicode 字符输出
 


StreamReader 和 StreamWriter 是用于从流读取和写入流的类

   StreamReader.read  读取一个字符       
   StreamReader.ReadLine  读取一行
   StreamReader.ReadToEnd  读取所有内容
   StreamWriter.Write 写入文本,可以写入多种类型的文本
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值