读写文件(二进制文件、文本文件、ini文件)

本文介绍了文件流的概念,详细讲解了如何使用FileStream、StreamReader和StreamWriter进行二进制和文本文件的读写操作。重点讨论了如何打开、移动、读取和写入文件,以及文本文件的读写方法。此外,还涉及了特殊文件类型如INI文件的读写,通过DllImport调用Windows API实现。
摘要由CSDN通过智能技术生成

读写文件(二进制文件、文本文件、ini文件)

1.      文件和流

文件(file)和流(stream)即有区别又有联系。文件是在各种媒质上(可移动磁盘、硬盘、CD 等)永久存储的数据的有序集合。它是一种进行数据读写操作的基本对象。通常情况下,文件按照树状目录进行组织,每个文件都有文件名、文件所在路径、创建时间、访问权限等属性。

1)        流是字节序列的抽象概念,如文件、输入输出设备、内部进程通信管道或者TCP/IP套接字等均可以看成流。流提供一种向后备存储器写入字节和从后备存储器读取字节的方式。

2)        除了和磁盘文件直接相关的文件流以外,还有多种其它类型的流,如分布在网络中、内存中和磁带中的流,分别称为网络流、内存流和磁带流。

3)        所有表示流的类都是从抽象基类Stream继承的。

流的操作有三类:

A.        读取:从流中读取数据到变量中。

B.        写入:把变量中的数据写入到流中。

C.        定位:重新设置流的当前位置,以便随机读写。

File类的静态方法主要是用于创建FileStream类。一个FileStream类的实例实际上代表一个磁盘文件,使用FileStream类对文件系统上的文件进行读取、写入、打开和关闭操作,并对其它与文件相关的操作系统句柄进行操作,如管道、标准输入和标准输出。读写操作可以指定为同步或异步操作。FileStream对输入输出进行缓冲,从而提高了系统的性能。

图1 与流相关类层次结构

对于文件的读写,最常用的类如下:

A.        FileStream(文件流):这个类主要用于在二进制文件中读写二进制数据——也可以读写任何文件。

B.        StreamReader(流读取器)和StreamWriter(流写入器):这两个类是专门用于读写文本文件的。

C.        BinaryReader和BinaryWrite:这两个类本身不执行流,而是提供其他对象的包装器以及对二进制数据进行额外的格式化。

2.      文件的基本操作

2.1.   二进制文件

2.1.1.       打开

读写二进制数据通常使用FileStream类。要构造其实例,需要以下4条信息:

A.        要访问的文件。

B.        表示如何打开文件的模式——指定在文件不存在时是否创建该文件,并确定是保留还是改写现有文件的内容。

C.        表示访问文件的方式——对文件执行的操作(只读、只写或者读写)。

D.       共享访问——其它线程所具有的对该文件的访问类型(独占文件、共享读或者共享写)。

打开指定路径上的FileStream,可以使用File类的Open方法或OpenRead方法或OpenText方法。

其中Open打开文件的方式有三种,如下表所示:

名称

说明 

File.Open (String, FileMode)

打开指定路径上的 FileStream,具有读/写访问权限。

File.Open (String, FileMode, FileAccess)

以指定的模式和访问权限打开指定路径上的 FileStream。

File.Open (String, FileMode, FileAccess,

FileShare)

打开指定路径上的 FileStream,具有指定的读、写或读/写访问模式以及指定的共享选项。

FileStream(String, FileMode, FileAccess)

等各种FileStream构造函数

FileStream构造函数与file.Open打开效果一致。

       FileAccess默认值为FileAccess.ReadWrite,FileShare默认值为FileShare.Read。

文件操作方式说明(.Net2.0 SDK定义)

public enum FileMode    // 指定操作系统打开文件的方式

{

    // 指定操作系统应创建新文件。此操作需要FileIOPermissionAccess.Write权限如果文件已存在,

    // 则将引发System.IO.IOException      

    CreateNew = 1,

    // 指定操作系统应创建新文件。如果文件已存在,它将被改写。这要求FileIOPermissionAccess.Write权限。

    // System.IO.FileMode.Create等效于这样的请求:如果文件不存在,则使用 FileMode.CreateNew;

    // 否则使用FileMode.Truncate

    Create = 2,

    // 指定操作系统应打开现有文件。打开文件的能力取决于 System.IO.FileAccess 所指定的值。

    // 如果该文件不存在,则引发 System.IO.FileNotFoundException

    Open = 3,

     // 指定操作系统应打开文件(如果文件存在);否则,应创建新文件。如果用 FileAccess.Read 打开文件,

     // 则需要 System.Security.Permissions.FileIOPermissionAccess.Read。如果文件访问为FileAccess.Write 或

     // FileAccess.ReadWrite,则需要 System.Security.Permissions.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值