FileStream读写文件【StreamWriter 和 StreamReader】

时间:2022-11-25 21:41:42
 FileStream对象表示在磁盘或网络路径上指向文件的流。这个类提供了在文件中读写字节的方法,但经常使用StreamReader或StreamWriter执行这些功能。这是因为FileStream类操作的是字节和字节数组,而Stream类操作的是字符数据。字符数据易于使用,但是有些操作,比如随机文件访问(访问文件中间某点的数据),就必须由FileStream对象执行.
其中创建FileStream对象最简单的构造函数如下:
1 FileStream读写文件【StreamWriter 和 StreamReader】        FileStream file  =   new  FileStream(fileName,FileMode.Member);
2 FileStream读写文件【StreamWriter 和 StreamReader】        FileStream file  =   new  FileStream(fileName, FileMode.Member, FileAccess.Member);
而FileAccess的成员:

成 员

说 明

Read

打开文件,用于只读

Write

打开文件,用于只写

ReadWrite

打开文件,用于读写

 

对文件进行不是FileAccess枚举成员指定的操作会导致抛出异常。此属性的作用是,基于用户的身份验证级别改变用户对文件的访问权限。

在FileStream构造函数不使用FileAccess枚举参数的版本中,使用默认值FileAccess. ReadWrite。

FileMode枚举成员,使用每个值会发生什么,取决于指定的文件名是否表示已有的文件。

成 员

文 件 存 在

文件不存在

Append

打开文件,流指向文件的末尾,只能与枚举FileAccess.Write联合使用

创建一个新文件。只能与枚举FileAccess.Write联合使用

Create

删除该文件,然后创建新文件

创建新文件

CreateNew

抛出异常

创建新文件

Open

打开现有的文件,流指向文件的开头

抛出异常

OpenOrCreate

打开文件,流指向文件的开头

创建新文件

Truncate

打开现有文件,清除其内容。流指向文件的开头,保留文件的初始创建日期

抛出异常


FileStream类操作的是字节和字节数组,而Stream类操作的是字符数据
StreamWriter允许将字符和字符串写入文件,它处理底层的转换,向FileStream对象写入数据。StreamReader也类似。

实例:
  1 FileStream读写文件【StreamWriter 和 StreamReader】using  System;
  2 FileStream读写文件【StreamWriter 和 StreamReader】 using  System.Data;
  3 FileStream读写文件【StreamWriter 和 StreamReader】 using  System.IO;
  4 FileStream读写文件【StreamWriter 和 StreamReader】 using  System.Text;
  5 FileStream读写文件【StreamWriter 和 StreamReader】
  6 FileStream读写文件【StreamWriter 和 StreamReader】FileStream读写文件【StreamWriter 和 StreamReader】 /// <summary>
  7FileStream读写文件【StreamWriter 和 StreamReader】/// Summary description for FileReadAndWrite
  8FileStream读写文件【StreamWriter 和 StreamReader】/// </summary>

  9 FileStream读写文件【StreamWriter 和 StreamReader】public   class  FileReadAndWrite
 10 FileStream读写文件【StreamWriter 和 StreamReader】FileStream读写文件【StreamWriter 和 StreamReader】 {
 11FileStream读写文件【StreamWriter 和 StreamReader】    public FileReadAndWrite()
 12FileStream读写文件【StreamWriter 和 StreamReader】FileStream读写文件【StreamWriter 和 StreamReader】    {
 13FileStream读写文件【StreamWriter 和 StreamReader】        //
 14FileStream读写文件【StreamWriter 和 StreamReader】        // TODO: Add constructor logic here
 15FileStream读写文件【StreamWriter 和 StreamReader】        //
 16FileStream读写文件【StreamWriter 和 StreamReader】    }

 17FileStream读写文件【StreamWriter 和 StreamReader】FileStream读写文件【StreamWriter 和 StreamReader】    /// <summary>
 18FileStream读写文件【StreamWriter 和 StreamReader】    /// 用FileStream写文件
 19FileStream读写文件【StreamWriter 和 StreamReader】    /// </summary>
 20FileStream读写文件【StreamWriter 和 StreamReader】    /// <param name="str"></param>
 21FileStream读写文件【StreamWriter 和 StreamReader】    /// <returns></returns>

 22FileStream读写文件【StreamWriter 和 StreamReader】    public void FileStreamWriteFile(string str)
 23FileStream读写文件【StreamWriter 和 StreamReader】FileStream读写文件【StreamWriter 和 StreamReader】    {
 24FileStream读写文件【StreamWriter 和 StreamReader】        byte[] byData;
 25FileStream读写文件【StreamWriter 和 StreamReader】        char[] charData;
 26FileStream读写文件【StreamWriter 和 StreamReader】        try
 27FileStream读写文件【StreamWriter 和 StreamReader】FileStream读写文件【StreamWriter 和 StreamReader】        {
 28FileStream读写文件【StreamWriter 和 StreamReader】            FileStream nFile = new FileStream("love.txt", FileMode.Create);
 29FileStream读写文件【StreamWriter 和 StreamReader】            //获得字符数组
 30FileStream读写文件【StreamWriter 和 StreamReader】            charData = str.ToCharArray();
 31FileStream读写文件【StreamWriter 和 StreamReader】            //初始化字节数组
 32FileStream读写文件【StreamWriter 和 StreamReader】            byData = new byte[charData.Length];
 33FileStream读写文件【StreamWriter 和 StreamReader】            //将字符数组转换为正确的字节格式
 34FileStream读写文件【StreamWriter 和 StreamReader】            Encoder enc = Encoding.UTF8.GetEncoder();
 35FileStream读写文件【StreamWriter 和 StreamReader】            enc.GetBytes(charData, 0, charData.Length,byData,0,true);
 36FileStream读写文件【StreamWriter 和 StreamReader】            nFile.Seek(0, SeekOrigin.Begin);
 37FileStream读写文件【StreamWriter 和 StreamReader】            nFile.Write(byData, 0, byData.Length);
 38FileStream读写文件【StreamWriter 和 StreamReader】        }

 39FileStream读写文件【StreamWriter 和 StreamReader】        catch (Exception ex)
 40FileStream读写文件【StreamWriter 和 StreamReader】FileStream读写文件【StreamWriter 和 StreamReader】        {
 41FileStream读写文件【StreamWriter 和 StreamReader】            throw ex;
 42FileStream读写文件【StreamWriter 和 StreamReader】        }

 43FileStream读写文件【StreamWriter 和 StreamReader】    }

 44FileStream读写文件【StreamWriter 和 StreamReader】FileStream读写文件【StreamWriter 和 StreamReader】    /// <summary>
 45FileStream读写文件【StreamWriter 和 StreamReader】    /// FileStream读取文件
 46FileStream读写文件【StreamWriter 和 StreamReader】    /// </summary>
 47FileStream读写文件【StreamWriter 和 StreamReader】    /// <param name="filePath"></param>
 48FileStream读写文件【StreamWriter 和 StreamReader】    /// <returns></returns>

 49FileStream读写文件【StreamWriter 和 StreamReader】    public string FileStreamReadFile(string filePath)
 50FileStream读写文件【StreamWriter 和 StreamReader】FileStream读写文件【StreamWriter 和 StreamReader】    {
 51FileStream读写文件【StreamWriter 和 StreamReader】        byte[] data = new byte[100];
 52FileStream读写文件【StreamWriter 和 StreamReader】        char[] charData = new char[100];
 53FileStream读写文件【StreamWriter 和 StreamReader】        try
 54FileStream读写文件【StreamWriter 和 StreamReader】FileStream读写文件【StreamWriter 和 StreamReader】        {
 55FileStream读写文件【StreamWriter 和 StreamReader】            FileStream file = new FileStream(filePath, FileMode.Open);
 56FileStream读写文件【StreamWriter 和 StreamReader】            //文件指针指向0位置
 57FileStream读写文件【StreamWriter 和 StreamReader】            file.Seek(0, SeekOrigin.Begin);
 58FileStream读写文件【StreamWriter 和 StreamReader】            //读入两百个字节
 59FileStream读写文件【StreamWriter 和 StreamReader】            file.Read(data, 0200);
 60FileStream读写文件【StreamWriter 和 StreamReader】            //提取字节数组
 61FileStream读写文件【StreamWriter 和 StreamReader】            Decoder dec = Encoding.UTF8.GetDecoder();
 62FileStream读写文件【StreamWriter 和 StreamReader】            dec.GetChars(data, 0, data.Length, charData, 0);
 63FileStream读写文件【StreamWriter 和 StreamReader】        }

 64FileStream读写文件【StreamWriter 和 StreamReader】        catch (Exception ex)
 65FileStream读写文件【StreamWriter 和 StreamReader】FileStream读写文件【StreamWriter 和 StreamReader】        {
 66FileStream读写文件【StreamWriter 和 StreamReader】            throw ex;
 67FileStream读写文件【StreamWriter 和 StreamReader】        }

 68FileStream读写文件【StreamWriter 和 StreamReader】        return Convert.ToString(charData);
 69FileStream读写文件【StreamWriter 和 StreamReader】    }

 70FileStream读写文件【StreamWriter 和 StreamReader】FileStream读写文件【StreamWriter 和 StreamReader】    /// <summary>
 71FileStream读写文件【StreamWriter 和 StreamReader】    /// StreamWriter写文件
 72FileStream读写文件【StreamWriter 和 StreamReader】    /// </summary>

 73FileStream读写文件【StreamWriter 和 StreamReader】    public void StreamWriterWriteFile()
 74FileStream读写文件【StreamWriter 和 StreamReader】FileStream读写文件【StreamWriter 和 StreamReader】    {
 75FileStream读写文件【StreamWriter 和 StreamReader】        try
 76FileStream读写文件【StreamWriter 和 StreamReader】FileStream读写文件【StreamWriter 和 StreamReader】        {
 77FileStream读写文件【StreamWriter 和 StreamReader】            FileStream nFile = new FileStream("love.txt", FileMode.CreateNew);
 78FileStream读写文件【StreamWriter 和 StreamReader】            StreamWriter writer = new StreamWriter(nFile);
 79FileStream读写文件【StreamWriter 和 StreamReader】
 80FileStream读写文件【StreamWriter 和 StreamReader】            writer.WriteLine("I love You!");
 81FileStream读写文件【StreamWriter 和 StreamReader】            writer.WriteLine("Do you love me!");
 82FileStream读写文件【StreamWriter 和 StreamReader】            writer.Close();
 83FileStream读写文件【StreamWriter 和 StreamReader】        }

 84FileStream读写文件【StreamWriter 和 StreamReader】        catch
 85FileStream读写文件【StreamWriter 和 StreamReader】FileStream读写文件【StreamWriter 和 StreamReader】        { }
 86FileStream读写文件【StreamWriter 和 StreamReader】    }

 87FileStream读写文件【StreamWriter 和 StreamReader】FileStream读写文件【StreamWriter 和 StreamReader】    /// <summary>
 88FileStream读写文件【StreamWriter 和 StreamReader】    /// StreamReader读取文件
 89FileStream读写文件【StreamWriter 和 StreamReader】    /// </summary>
 90FileStream读写文件【StreamWriter 和 StreamReader】    /// <returns></returns>

 91FileStream读写文件【StreamWriter 和 StreamReader】    public string StreamReaderReadFile()
 92FileStream读写文件【StreamWriter 和 StreamReader】FileStream读写文件【StreamWriter 和 StreamReader】    {
 93FileStream读写文件【StreamWriter 和 StreamReader】        string str="";
 94FileStream读写文件【StreamWriter 和 StreamReader】        try
 95FileStream读写文件【StreamWriter 和 StreamReader】FileStream读写文件【StreamWriter 和 StreamReader】        {
 96FileStream读写文件【StreamWriter 和 StreamReader】            FileStream file = new FileStream("love.txt", FileMode.Open);
 97FileStream读写文件【StreamWriter 和 StreamReader】            StreamReader sr = new StreamReader(file);
 98FileStream读写文件【StreamWriter 和 StreamReader】            while (sr.ReadLine()!=null)
 99FileStream读写文件【StreamWriter 和 StreamReader】FileStream读写文件【StreamWriter 和 StreamReader】            {
100FileStream读写文件【StreamWriter 和 StreamReader】                str += sr.ReadLine();
101FileStream读写文件【StreamWriter 和 StreamReader】            }

102FileStream读写文件【StreamWriter 和 StreamReader】            //或者str = sr.ReadToEnd();
103FileStream读写文件【StreamWriter 和 StreamReader】            sr.Close();
104FileStream读写文件【StreamWriter 和 StreamReader】        }

105FileStream读写文件【StreamWriter 和 StreamReader】        catch
106FileStream读写文件【StreamWriter 和 StreamReader】FileStream读写文件【StreamWriter 和 StreamReader】        { }
107FileStream读写文件【StreamWriter 和 StreamReader】        return str;
108FileStream读写文件【StreamWriter 和 StreamReader】    }

109FileStream读写文件【StreamWriter 和 StreamReader】}

110 FileStream读写文件【StreamWriter 和 StreamReader】