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);
}
}
}
}

浙公网安备 33010602011771号