C#之文件

本文详细介绍了C#中处理文件的各类操作,包括文件路径、输入输出流的概念,重点讲解了FileStream类的使用,如文件模式、访问模式、共享模式等参数。还提到了BinaryReader类的读取方法以及Directory类和DirectoryInfo类在处理目录时的方法,如创建、删除、移动目录及获取目录下的文件和子目录。
摘要由CSDN通过智能技术生成
  • 相对路径
    ./是当前目录
    …/是父级目录
    /是根目录
  • 输入流和输出流
    输入流用于从文件读取数据(读操作),输出流用于向文件写入数据(写操作)。
  • 各种处理文件的类
    在C#的System.IO 命名空间有各种不同的类,来进行各种文件操作。如下是其命名空间下一些常用的非抽象类:
I/O 类				描述
BinaryReader		从二进制流读取原始数据。
BinaryWriter		以二进制格式写入原始数据。
BufferedStream		字节流的临时存储。
Directory			有助于操作目录结构。
DirectoryInfo		用于对目录执行操作。
DriveInfo			提供驱动器的信息。
File				有助于处理文件。
FileInfo			用于对文件执行操作。
FileStream			用于文件中任何位置的读写。
MemoryStream		用于随机访问存储在内存中的数据流。
Path				对路径信息执行操作。
StreamReader		用于从字节流中读取字符。
StreamWriter		用于向一个流中写入字符。
StringReader		用于读取字符串缓冲区。
StringWriter		用于写入字符串缓冲区。
  1. FileStream类
    FileStream 操作字节,可以操作任何类型的文件;
    下面来简单介绍FileStream类的方法和参数:
    (1)FileStream() 作用:
    创建FileStream对象,参数:第一个是路径,第二个是文件模式FileMode枚举,第三个数据模式FileAcess
 		FileStream(String, FileMode):
     	FileStream(String, FileMode, FileAccess)
        FileStream(String, FileMode, FileAccess, FileShare)
 		FileStream(String, FileMode, FileAccess, FileShare, Int32)

初始化FileStream时使用包含文件共享属性(System.IO.FileShare)的构造函数比使用自定义线程锁更为安全和高效
(2)FileMode(以何种方式打开或者创建文件):
CreateNew(创建新文件)、Create(创建并覆盖)、Open(打开)、OpenOrCreate(打开并创建)、Truncate(覆盖文件)、Append(追加);

(3)FileAcess(文件流对象如何访问该文件):
  Read(只读) 、Write(写)、ReadWirte(读写);

(4)FileShare(进程如何共享文件):
  None(拒绝共享)、Read 、Write、ReadWrite(同时读写)、Delete;

(5)bufferSize(缓冲区大小设置)

4、Stream.Read(Byte[], Int32, Int32)
当在派生类中重写时,从当前流读取字节序列,并将此流中的位置提升读取的字节数。

5、Stream.Write(Byte[], Int32, Int32)
当在派生类中重写时,向当前流中写入字节序列,并将此流中的当前位置提升写入的字节数。

6、close():关闭当前流并释放与当前流关联的任何资源(如套接字和文件句柄);

7、dispose():释放流所有使用的资源;

8、CopyTo(Stream):从当前流中读取所有字节并将其写入目标流。

CopyTo(Stream, Int32):从当前流中读取所有字节,并使用指定的缓冲区大小将它们写入目标流

9、Seek()(FileStream类维护内部文件指针,该指针指向文件中进行下一次读写操作的位置):将此流的当前位置设置为给定值。(stream.seek(Int64,SeekOrigin)

第一个参数规定文件指针以字节为单位的移动距离。第二个参数规定开始计算的起始位置;SeekOrigin枚举包含3个值:Begin、Current 和 End;

例如:aFile.Seek(0, SeekOrigin.End);

10、由于设置了文件共享模式为允许随后写入,所以即使多个线程同时写入文件,也会等待之前的线程写入结束之后再执行,而不会出现错误

using (FileStream logFile = new FileStream(logFilePath, FileMode.OpenOrCreate, FileAccess.Write, FileShare.Write))

11、简单示例1:简单文件写入

	 FileStream devStream = new FileStream(devPath, 
	 FileMode.Append, FileAccess.Write,				  
	  FileShare.ReadWrite,512);
    devStream.Write(data, 0, 128);
    if(devStream != null)
    devStream.Close
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值