`
java-mans
  • 浏览: 11416565 次
文章分类
社区版块
存档分类
最新评论

解析文件和流(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 类的相应静态方法,因为并不总是需要安全检查。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics