FlieStream
using System; using System.IO; using System.Text; namespace _05FileStream { internal class Program { private static void Main(string[] args) { //FlieStream 操作字节的 //读取操作 //1、创建FileStream对象 var fs = new FileStream(@"C:\Users\so\Desktop\新建文本文档.txt", FileMode.Open, FileAccess.Read); var buffer = new byte[1024]; //2、fs读取到的东西放到字节数组中(可以限定每次读取多少)如果一次无法满足可以使用循环 //返回本次实际读取到的有效字节数 var n = fs.Read(buffer, 0, buffer.Length); //3、将字节数组中每一个元素按照制定的编码格式解码成字符串 var str = Encoding.Default.GetString(buffer, 0, n); //4、关闭文件流 释放流占用的资源 fs.Close(); fs.Dispose(); Console.WriteLine(str); //******************************* //为了避免忘记释放资源,可以使用using using ( /*创建FileStream对象整个语句放入*/) { //........ } //******************************* //写入操作 var buffer2 = new byte[1024]; //1、将字符串编码成字节数组 buffer2 = Encoding.Default.GetBytes(str); //2、创建FileStream对象 var fw = new FileStream(@"C:\Users\so\Desktop\newnew.txt", FileMode.Create, FileAccess.ReadWrite); //3、fw将字节数组写入到文件中(可以限定每次写入多少) fw.Write(buffer2, 0, buffer2.Length); //4、关闭文件流 释放流占用的资源 fw.Close(); fw.Dispose(); Console.WriteLine("文件创建完成"); Console.ReadKey(); //StreamReader StreamWriter 操作字符的 } } }
//同时读取和写入 copy示例 循环读取
public static void CopyFile(string source, string target) { using (FileStream fs = new FileStream(source, FileMode.Open, FileAccess.Read)) { using (FileStream fw = new FileStream(target, FileMode.OpenOrCreate, FileAccess.Write)) { byte[] buffer = new byte[1024*1024*5]; //因为文件可能会比较大,所以我们在读取的时候应该通过一个循环去读取 while (true) { //返回本次读取实际读取到的字节数 int n = fs.Read(buffer, 0, buffer.Length); //如果返回一个0,也就意味着什么都没有读取到,读取完了 if (n == 0) { break; } fw.Write(buffer, 0, n); } } } }