在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
System.IO 提供了一个抽象类Stream , Stream类 支持对字节的读写操作。 Stream是抽象类,所有其它流的类都必须从Steam类中继承。Stream类及其子类共同构成了一个数据源和数据存储的视图 Stream类继承层级关系:
流包含以下基本操作: 读操作(Reading)。即读出流中的数据,把数据存放在另一种数据结构中,比如数组。 写操作(Writting)。即从另一种数据结构中读出数据,存放至流对象中。 搜索操作(Seeking)。即从流中的当前位置开始搜索,定位到指定的位置。 由于数据类型的不同,一些流可能不同时支持以上的所有操作。比如网络流就不支持搜索操作。Stream类提供了CanRead,CanWrite和CanSeek三种属性,来表示流是否支持这些操作。 BinaryReader和BinaryWriter BinaryReader和BinaryWriter这两个类提供了从字符串或原始数据到各种流之间的读写操作。 File和Directory File类支持对文件的基本操作,包括创建、拷贝、移动、删除和打开一个文件。 Directory类则用于执行常见的各种目录操作,如创建、移动、浏览目录及其子目录。 File类和Directory类的基类都是抽象类FileSystemEntry。 TextReader和TextWriter TextReader和TextWriter类都是抽象类。和Stream类的字节形式的输入和输出不同,它们用于Unicode字符的输入和输出。 StringReader和StringWriter StringReader和StringWriter在字符串中读写字符。 StreamReader和StreamWriter StreamReader和StreamWriter在流中读写字符。 BufferedStream BufferedStream是为网络流添加缓冲的一种流类型,利用缓冲可以避免操作系统频繁地到磁盘上读取数据,从而减轻了操作系统的负担。 MemoryStream MemoryStream是一个无缓冲流,它所封装的数据直接放在内存中,因此可以用于快速临时存储、进程间传递信息等。 NetworkSteam Networksteam表示在互联网络上传递的流。 示例:
using System;
namespace ConsoleApplication9
string testString = "Stream!Hello world";
Console.WriteLine("现在Stream.Postion在第{0}位置", stream.Position + 1);
//从刚才结束的位置(当前位置)往后移3位,到第7位
Console.WriteLine("重新定位后Stream.Postion在第{0}位置", newPositionInStream + 1);
// 设置一个空的变量来接收流中的数据,长度根据stream的长度来决定
//通过流读出的readBuffer的数据求出从相应Char的数量
stream.Close();
Console.ReadLine();
}
结果如下:
举例: (1)BinaryWriter 和 BinaryReader BinaryWriter 和 BinaryReader 类用于读取和写入数据,而不是字符串。向新的空文件流 (Test.data) 写入数据及从中读取数据。在当前目录中创建了数据文件之后,也就同时创建了相关的 BinaryWriter 和 BinaryReader,BinaryWriter 用于向 Test.data 写入整数 0 到 10,Test.data 将文件指针置于文件尾。在将文件指针设置回初始位置后,BinaryReader 读出指定的内容。
using System;
using System.IO;
class MyStream
{
private const string FILE_NAME = "Test.data";
public static void Main(String[] args)
{
// 创建空白文件
if (File.Exists(FILE_NAME))
{
Console.WriteLine("{0} already exists!", FILE_NAME);
return;
}
FileStream fs = new FileStream(FILE_NAME, FileMode.CreateNew);
// 创建BinaryWriter实例 用于写文件
BinaryWriter w = new BinaryWriter(fs);
// 写文件
for (int i = 0; i < 11; i++)
{
w.Write( (int) i);
}
w.Close();
fs.Close();
// 创建BinaryReader实例用于读文件
fs = new FileStream(FILE_NAME, FileMode.Open, FileAccess.Read);
BinaryReader r = new BinaryReader(fs);
// 读文件
for (int i = 0; i < 11; i++)
{
Console.WriteLine(r.ReadInt32());
}
r.Close();
fs.Close();
}
}
using System;
using System.IO;
class Test
{
public static void Main()
{
try
{
// 创建StreamReader 实例读文件.
using (StreamReader sr = new StreamReader("TestFile.txt"))
{
String line;
// 读文件到结尾并展示
while ((line = sr.ReadLine()) != null)
{
Console.WriteLine(line);
}
}
}
catch (Exception e)
{
// 捕获异常
Console.WriteLine("The file could not be read:");
Console.WriteLine(e.Message);
}
}
}
|
请发表评论