解析文件和流(Files ||Streams || DirectoryInfo类 ||FileInfo类)

Stream 类:
流涉及三个基本操作:
可以读取流。读取是从流到数据结构(如字节数组)的数据传输。
可以写入流。写入是从数据结构到流的数据传输。 流可以支持查找。查找是对流内的当前位置进行的查询和修改。查找功能取决于流具有的后备存储区类型。例如,网络流没有当前位置的统一概念,因此一般不支持查找。
Stream是所有流的抽象基类。流是字节序列的抽象概念,例如文件、输入/输出设备、内部进程通信管道或者TCP/IP套接字。Stream类及其派生类提供这些不同类型的输入和输出的一般视图,使程序员不必了解操作系统和基础设备的具体细节。
根据基础数据源或储存库,流可能只支持这些功能中的一部分。通过使用 CanRead、 CanWrite 和 CanSeek属性,应用程序可以查询流的功能。
Read和Write方法读写各种不同格式的数据。对于支持查找的流,使用Seek和SetLength方法以及Position和Length属性可查询和修改流的当前位置和长度。
有些流实现执行基础数据的本地缓冲以提高性能。对于这样的流,Flush方法可用于清除所有内部缓冲区并确保将所有数据写入基础数据源或储存库。
在Stream调用Close可清空任何缓存的数据,从本质上为您调用Flush。Close还释放操作系统资源(如文件句柄、网络连接或用于任何内部缓冲的内存)。BufferedStream类提供了将一个经过缓冲的流环绕另一个流的功能,以便提高读写性能。如果需要不带后备存储区(即位存储桶)的流,请使用 Null。

在实现 Stream 的派生类时,必须提供 Read 和 Write 方法的实现。


FileStream 类:
使用FileStream类对文件系统上的文件进行读取、写入、打开和关闭操作,并对其他与文件相关的操作系统句柄进行操作,如管道、标准输入和标准输出。 可以指定读写操作是同步还是异步。FileStream 缓冲输入和输出以获得更好的性能。
FileStream对象支持使用Seek方法对文件进行随机访问。Seek允许将读取/写入位置移动到文件中的任意位置。这是通过字节偏移参考点参数完成的。字节偏移量是相对于查找参考点而言的,该参考点可以是基础文件的开始、当前位置或结尾,分别由 SeekOrigin 类的三个属性表示。


File 类:
将 File 类用于典型的操作,如复制、移动、重命名、创建、打开、删除和追加到文件。 也可将 File 类用于获取和设置文件属性或有关文件创建、访问及写入操作的 DateTime 信息。

FileInfo 类:
将 FileInfo 类用于典型的操作,如复制、移动、重命名、创建、打开、删除和追加到文件。
如果打算多次重用某个对象,可考虑使用FileInfo的实例方法,而不是File类的相应静态方法,因为并不总是需要安全检查。默认情况下,将向所有用户授予对新文件的完全读/写访问权限。
eg:
string path = Path.GetTempFileName();
FileInfo fi1 = new FileInfo(path);


if (!fi1.Exists)
{
//Create a file to write to.
using (StreamWriter sw = fi1.CreateText())
{
sw.WriteLine("Hello");
sw.WriteLine("And");
sw.WriteLine("Welcome");
}
}


//Open the file to read from.
using (StreamReader sr = fi1.OpenText())
{
string s = "";
while ((s = sr.ReadLine()) != null)
{
Console.WriteLine(s);
}
}

DirectoryInfo 类:
将 DirectoryInfo 类用于典型操作,如复制、移动、重命名、创建和删除目录。
如果打算多次重用某个对象,可考虑使用 DirectoryInfo 的实例方法,而不是 Directory 类的相应静态方法,因为并不总是需要安全检查。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值