第十一章 文件和流.ppt
文本预览下载声明
(8)WriteByte()把指定的字节写入缓冲流的当前位置,并把流的位置推进一个字节。如果value是一个空引用,或如果方法在流关闭后被调用,将抛出异常,该方法的声明如下: public override void WriteByte(byte value) 11.3.3 字节流 FileStream类 FileStream类代表了能够访问一个文件的I/O流。它允许数据被写入文件或是从文件中读取。FileStream类同时支持同步和异步的文件访问。它是一个相当原始的流,它只能读取或写入一个字节或字节数组。我们通常不需要直接和FileStream类的成员交互,而是使用各种Stream包装类(如StreamRead或StreamWriter),它们能更方便地处理文本数据。 11.3.3 字节流 public static void Main(string[] args) { UseBufferedStream(); UseFileStream(abcdefg); UseMemoryStream(内存流测字符串,测试分段读取); Console.ReadKey(); } public static void UseFileStream(string msg) { Console.WriteLine(\n使用FileStream); FileStream fStream = File.Open(msg.dat, FileMode.Create); ? byte[] msgArray = Encoding.Default.GetBytes(msg); // 写入文件 fStream.Write(msgArray, 0, msgArray.Length); Console.WriteLine(从指定位置逐字符读取文件流); // 设置文件流起始位置 fStream.Position = 1; byte[] BytesFromFile = new byte[msgArray.Length]; for (int i = (int)fStream.Position; i msgArray.Length; i++) { BytesFromFile[i] = (byte)fStream.ReadByte(); Console.Write((char)BytesFromFile[i]); } Console.WriteLine(); Console.WriteLine(Encoding.Default.GetString(BytesFromFile)); fStream.Dispose(); } ? public static void UseBufferedStream() { Console.WriteLine(使用BufferedStream); // 打开输出文件 Stream oStream = File.OpenWrite(output.txt); // 打开输入文件 Stream iStream = File.OpenRead(input.txt); // 创建缓存 BufferedStream bStreamOutput = new BufferedStream(oStream); BufferedStream bStreamInput = new BufferedStream(iStream); // 输入/出缓存流属性 Console.WriteLine(输入流\n可读:{0},可写:{1},可查:{2},位置:{3},长度:{4}, bStreamInput.CanRead, bStreamInput.CanWrite, bStreamInput.CanSeek, bStreamInput.Position, bStreamInput.Length); Console.WriteLine(输出流\n可读:{0},可写:{1},可查:{2},位置:{3},长度:{4}, bStreamOutput.CanRead, bStreamOutput.CanWrite, bStreamOutput.CanSeek, bStreamInput.Position, bStreamInput.Length); byte[] buffer = new Byte[4096]; int bytesRead; while ((bytesRead=bStreamInput.Read(buffer,0,4096)) 0) { bStreamOutput.Write(buffer, 0, bytesRead); } // 清空缓冲 bStreamOutput.Fl
显示全部