将创建文件流对象的过程写在using当中,会自动的帮助我们释放流所占用的资源。
using System;
using System.IO;
using System.Text;
namespace _078_使用FileStream来读写文件
{
class Program
{
static void Main(string[] args)
{
//FileStream 操作字节的
// 文件路径 对文件进行什么操作 对文件中的数据进行什么操作
//使用FileStream读取数据
FileStream fsRead = new FileStream(@"C:\Users\46124\Desktop\CSharpTestOne.txt", FileMode.OpenOrCreate, FileAccess.Read);
byte[] buffer = new byte[1024 * 1024 * 5];
//.Read(byte[] array, int offset, int count) 返回int类型
//offset:array中的字节偏移量,将在此处开始读取字节
//count :最多读取的字节数
//返回结果:读入缓冲区中的总字节数(int)
int r = fsRead.Read(buffer, 0, buffer.Length);
Console.WriteLine(r);
//将字节数组中的每一个元素按照指定的编码格式解码成字符串
// string s = Encoding.Default.GetString(buffer); 这样在打印时会用很多空,所以只要解码(buffer,0,r)即可(从buffer[0]->buffer[r])
string s = Encoding.Default.GetString(buffer, 0, r);
Console.WriteLine(s);
//关闭流
fsRead.Close();
//释放流所占用的资源
fsRead.Dispose();
//使用FileStream写入数据
using (FileStream fsWrite=new FileStream(@"C:\Users\46124\Desktop\CSharpTestOne.txt",FileMode.OpenOrCreate,FileAccess.Write))
{
string str = "这是我用程序写入的数据";
byte[] buffer1 = Encoding.Default.GetBytes(str);
fsWrite.Write(buffer1, 0, buffer1.Length);
}
Console.WriteLine("写入成功");
//StreamReader、StreamWriter 操作字符的
Console.ReadKey();
}
}
}
使用FileStream实现多媒体文件的复制
using System;
using System.IO;
namespace _079_使用FileStream实现多媒体文件的复制
{
class Program
{
static void Main(string[] args)
{
//思路:就是先将复制的多媒体文件读取出来,然后再写入到指定的位置
string source = @"C:\Users\46124\Desktop\Create one's own\Video\牌子击打声.mp4";
string target = @"C:\Users\46124\Desktop\CSharpTestTwo.mp4";
CopyFile(source, target);
Console.WriteLine("复制粘贴成功");
Console.ReadKey();
}
public static void CopyFile(string source, string target)
{
//1、创建一个读取的流
using (FileStream fsRead = new FileStream(source, FileMode.OpenOrCreate, FileAccess.Read))
{
//2、创建一个写入的流
using (FileStream fsWrite = new FileStream(target, FileMode.OpenOrCreate, FileAccess.Write))
{
byte[] buffer = new byte[1024 * 1024 * 5];
//因为文件可能比较大,所以我们在读取的时候,应通过一个循环去读取
while (true)
{
//返回这次实际读取到的字节数
int r = fsRead.Read(buffer, 0, buffer.Length);//可能存在文件指针,有记忆功能,所以并不是一直读取(0,buffer.Length)
Console.WriteLine(r);
if (r == 0)
{
break;
}
fsWrite.Write(buffer, 0, r);//可能存在文件指针,有记忆功能,所以并没有覆盖
}
}
}
}
}
}
080_StreamReader和StreamWriter
using System;
using System.IO;
using System.Text;
namespace _80_StreamReader和StreamWriter
{
class Program
{
static void Main(string[] args)
{
//使用StreamReader来读取一个文本文件
using (StreamReader sr = new StreamReader(@"C:\Users\46124\Desktop\CSharpTestOne.txt", Encoding.Default))
{
while (!sr.EndOfStream)
{
Console.WriteLine(sr.ReadLine());
}
//Console.WriteLine(sr.ReadToEnd());
}
//使用StreamWriter来写入一个文本文件 true:追加数据 false:如果文件不存在则新建,存在即覆盖
using (StreamWriter sw = new StreamWriter(@"C:\Users\46124\Desktop\CSharpTestThree.txt", true))
{
sw.Write("使用StreamWriter写入的文本!!");
}
Console.WriteLine("写入成功");
Console.ReadKey();
}
}
}