zoukankan      html  css  js  c++  java
  • 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();
    
            }
        }
    }
  • 相关阅读:
    命令拷屏之网络工具
    PHP 设计模式 笔记与总结(1)命名空间 与 类的自动载入
    Java实现 计蒜客 1251 仙岛求药
    Java实现 计蒜客 1251 仙岛求药
    Java实现 计蒜客 1251 仙岛求药
    Java实现 蓝桥杯 算法训练 字符串合并
    Java实现 蓝桥杯 算法训练 字符串合并
    Java实现 蓝桥杯 算法训练 字符串合并
    Java实现 LeetCode 143 重排链表
    Java实现 LeetCode 143 重排链表
  • 原文地址:https://www.cnblogs.com/fengfuwanliu/p/10566296.html
Copyright © 2011-2022 走看看