• C#-----类FileStream的使用


       1.枚举类FileMode

         指定操作系统打开文件的方式

    • CreateNew  指定操作系统应创建一个新的文件
    • Create  指定操作系统应创建一个新的文件。 如果该文件已存在,则会覆盖它
    • Open  指定操作系统应打开现有文件
    • OpenOrCreate  指定操作系统应打开一个文件,是否它存在,则否则,应创建一个新的文件
    • Truncate  指定操作系统应打开现有文件。 当打开文件时,应被截断,以便其大小为零字节
    • Append  如果它存在,并且查找到该文件的末尾,或者创建一个新文件,请打开该文件

       2.枚举类FileAccess

         对于读、 写或读/写访问的文件中定义的常数

    • Read  对文件的读取访问权限。 可以从文件读取数据
    • Write  对文件的写入访问权限。 数据可以写入该文件
    • ReadWrite  读取和写入到文件的访问。 可以写入和从文件中读取数据

       3.枚举类FileShare

         包含用于控制的访问其他类型的常数 System.IO.FileStream 对象可以具有相同的文件

    • None  拒绝共享当前文件。 在关闭文件之前,任何请求打开的文件 (此进程或另一个进程) 将失败
    • Read  允许以后打开文件进行读取
    • Write  允许以后打开文件进行写入
    • ReadWrite  允许以后打开的文件进行读取或写入
    • Delete  允许以后删除文件
    • Inheritable  使文件句柄由子进程继承。 这是不直接支持 Win32

       4.FileStream类

         FileStream派生于抽象类Stream,Stream抽象类实现了IDisposable接口

         常用构造方法:  

    • FileStream(String 文件路径,FileMode 文件打开模式)
    • FileStream(String 文件路径,FileMode 文件打开模式,FileAccess 文件访问方式)
    • FileStream(String 文件路径,FileMode 文件打开模式,FileAccess 文件访问方式,FileShare 文件共享方式)

         常用方法:

    • Read() 从流中读取数据,返回字节数组
    • Write() 将字节块(字节数组)写入该流
    • Seek() 设置文件读取或写入的起始位置
    • Flush() 清除该流缓冲区,使得所有缓冲的数据都被写入到文件中
    • Close() 关闭当前流并释放与之相关联的所有系统资源

         属性:

    • CanRead 判断当前流是否支持读取,返回bool值,True表示可以读取
    • CanWrite 判断当前流是否支持写入,返回bool值,True表示可以写入
    • Position 获取或设置此流的当前位置

     读取文本文件

    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace FileStreamTest
    {
        class Program
        {
            static void Main(string[] args)
            {
                using (FileStream fileStream = new FileStream("E:\source.txt", FileMode.OpenOrCreate, FileAccess.ReadWrite))
                {
                    byte[] buff = new byte[1024];//设置内存缓存区大小
                    while (true)
                    {
                        int r = fileStream.Read(buff, 0, buff.Length);
                        if (r == 0)
                            break;
                        else
                        {
                            string str = Encoding.Default.GetString(buff);
                            Console.Write(str);
                        }
                    }
                }
                Console.WriteLine("读取结束");
                Console.ReadLine();
            }
        }
    }

     写入文本文件

    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace FileStreamTest
    {
        class Program
        {
            static void Main(string[] args)
            {
                using (FileStream fileStream = new FileStream("E:\source.txt", FileMode.OpenOrCreate, FileAccess.ReadWrite))
                {
                    //将要追加的字符串转换成字节数组
                    byte[] byteBuffer = Encoding.Default.GetBytes("你最好!Yeah!");
                    //设置当前流的位置(如果不设置下面的Position属性,执行Write方法的时候是从前往后覆盖)
                    fileStream.Position = fileStream.Length;
                    //写入文件
                    fileStream.Write(byteBuffer, 0, byteBuffer.Length);
                    
                }
                Console.ReadLine();
    
            }
        }
    }
  • 相关阅读:
    Shell变量
    Shell执行脚本
    C++类的默认成员函数
    C# CAD 二次开发(二) -集成开发环境VS2012+CAD2016
    C# CAD 二次开发(一) -前期搜集资料篇
    WPF 学习笔记(十二)
    WPF 学习笔记(十一)
    WPF 学习笔记(十)
    WPF 学习笔记(九)
    WPF 学习笔记(八)
  • 原文地址:https://www.cnblogs.com/fengfuwanliu/p/10566296.html
Copyright © 2020-2023  润新知