c#文件的输入与输出:
一个文件是一个存储在磁盘中带有指定名称和目录路劲的数据集合。当打开文件进行读写时,他变成一个流,从根本上说,流是通过通信路径传递的序。主要有两个流:输入流和输出流。输入流用于从文件读取数据,输出流用于向文件写入数据。
c#I/O类:
system.IO命名空间有各种不同的类,用于执行文件操作,如创建和删除文件、读取或写入文件,关闭文件等。
下表列出了一些System.IO命名空间常用的用的非抽象类
I/O类 | 描述 |
BinaryReader | 从二进制流读取原始数据 |
BinaryWriter | 二进制流格式写入数据 |
BufferedStream | 字节流的临时存储 |
Directory | 有助于操作目录结构 |
DirectoryInfo | 用于对目录执行结构 |
DriveInfo | 提供驱动器的信息 |
File | 有助于处理文件 |
FileInfo | 用于对文件进行操作 |
FileStream | 用于文件中任何位置的读写 |
MemoryStream | 用于随机访问存储在内存中的数据流 |
Path | 对信息路径进行操作 |
StreamReader | 用于从字节流中读取字符 |
StreamWriter | 用于向一个流中写入字符 |
StringReader | 用于读取字符串的缓冲区 |
StringWriter | 用于写入字符串的缓冲区 |
FileStream类
System.IO命名空间中的FileStream类有助于文件的读写与关闭。该类派生自抽象类Stream。
创建FileStream类的语法如下:
FileStream <object_name>= new FileStream(<file_name>,<FileMode Enumerator>,<FileAccess Enumerator>,<FileShare Enumerator>);
例如,创建一个FileStream对象F取名为sample.txt的文件:
1 FileStream F = new FileStream("sample.txt", FileMode.Open, FileAccess.Read, FileShare.Read);
参数 | 描述 |
FileMode |
FileMode枚举定义了各种文件的方法。FileMode枚举成员有: 1,Append:打开一个已有的文件,并将光标放置在文件的末尾。如果文件不存在,则创建文件。 2,Create:创建一个新文件。如果文件已存在,则删除旧文件,然后创建新文件。 3,CreateNew:指定操作系统应创建一个文件。如果文件已存在,则输出异常。 4,Open:打开一个已有的文件。如果文件不存在,则抛出异常。 5,OpenOrCreate:指定操作系统应打开一个已有的文件。如果文件不存在,则用指定的名称创建一个新的文件打开。 6,Truncate:打开一个已有的文件,文件一旦打开,就将被截断为零字节大小。然后可以向文件写出全新的数据,但保留文件的初始创建日期。如果文件不存在,则抛出异常。 |
FileAccess | FileAccess枚举的成员有:Read、ReadWrite和Write。 |
FileShare |
FileShare枚举的成员有: 1,Inheritable:允许文件句柄可由子进程继承。Win32不直接支持此功能。 2,None:谢绝共享当前文件。关闭文件前,打开该文件的任何请求(由此进程或另一进程发出的请求)都将失败。 3,Read:允许随后打开文件读取。如果未制定此标志,则文件关闭前,任何打开该文件以进行读取的请求(由此进程或另一进程发出的请求)都将失败。但是,及时指定了此标志,仍可能需要附加权限才能访问该文件。 4,ReadWrite:允许随后打开文件读取或写入。如果未指定此标志,则文件关闭前,任何打开该文件以进行读取或写入的请求(由此进程或另一进程发出)都将失败。但是,即使指定了该标志,仍可能需要附加权限才能访问该文件。 5,Write:允许随后打开文件写入。如果未指定此标志,则文件关闭前,任何打开该文件以进行写入的请求(由此进程或另一进程发出)都将失败。但是,即使指定了该标志,仍可能需要附加权限才能访问该文件。 6,Delete:允许随后删除。 |
例子:
1 using System; 2 using System.IO; 3 4 namespace FileIOApplication 5 { 6 class Program 7 { 8 static void Main(string[] args) 9 { 10 FileStream F = new FileStream("test.dat", 11 FileMode.OpenOrCreate, FileAccess.ReadWrite); 12 13 for (int i = 1; i <= 20; i++) 14 { 15 F.WriteByte((byte)i); 16 } 17 18 F.Position = 0; 19 20 for (int i = 0; i <= 20; i++) 21 { 22 Console.Write(F.ReadByte() + " "); 23 } 24 F.Close(); 25 Console.ReadKey(); 26 } 27 } 28 }
结果:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 -1
转载于:https://www.yuque.com/docs/share/98200e1a-446c-42b8-9050-57082a501235