image.png

将创建文件流对象的过程写在using当中,会自动的帮助我们释放流所占用的资源。

  1. using System;
  2. using System.IO;
  3. using System.Text;
  4. namespace _078_使用FileStream来读写文件
  5. {
  6. class Program
  7. {
  8. static void Main(string[] args)
  9. {
  10. //FileStream 操作字节的
  11. // 文件路径 对文件进行什么操作 对文件中的数据进行什么操作
  12. //使用FileStream读取数据
  13. FileStream fsRead = new FileStream(@"C:\Users\46124\Desktop\CSharpTestOne.txt", FileMode.OpenOrCreate, FileAccess.Read);
  14. byte[] buffer = new byte[1024 * 1024 * 5];
  15. //.Read(byte[] array, int offset, int count) 返回int类型
  16. //offset:array中的字节偏移量,将在此处开始读取字节
  17. //count :最多读取的字节数
  18. //返回结果:读入缓冲区中的总字节数(int)
  19. int r = fsRead.Read(buffer, 0, buffer.Length);
  20. Console.WriteLine(r);
  21. //将字节数组中的每一个元素按照指定的编码格式解码成字符串
  22. // string s = Encoding.Default.GetString(buffer); 这样在打印时会用很多空,所以只要解码(buffer,0,r)即可(从buffer[0]->buffer[r])
  23. string s = Encoding.Default.GetString(buffer, 0, r);
  24. Console.WriteLine(s);
  25. //关闭流
  26. fsRead.Close();
  27. //释放流所占用的资源
  28. fsRead.Dispose();
  29. //使用FileStream写入数据
  30. using (FileStream fsWrite=new FileStream(@"C:\Users\46124\Desktop\CSharpTestOne.txt",FileMode.OpenOrCreate,FileAccess.Write))
  31. {
  32. string str = "这是我用程序写入的数据";
  33. byte[] buffer1 = Encoding.Default.GetBytes(str);
  34. fsWrite.Write(buffer1, 0, buffer1.Length);
  35. }
  36. Console.WriteLine("写入成功");
  37. //StreamReader、StreamWriter 操作字符的
  38. Console.ReadKey();
  39. }
  40. }
  41. }

使用FileStream实现多媒体文件的复制

  1. using System;
  2. using System.IO;
  3. namespace _079_使用FileStream实现多媒体文件的复制
  4. {
  5. class Program
  6. {
  7. static void Main(string[] args)
  8. {
  9. //思路:就是先将复制的多媒体文件读取出来,然后再写入到指定的位置
  10. string source = @"C:\Users\46124\Desktop\Create one's own\Video\牌子击打声.mp4";
  11. string target = @"C:\Users\46124\Desktop\CSharpTestTwo.mp4";
  12. CopyFile(source, target);
  13. Console.WriteLine("复制粘贴成功");
  14. Console.ReadKey();
  15. }
  16. public static void CopyFile(string source, string target)
  17. {
  18. //1、创建一个读取的流
  19. using (FileStream fsRead = new FileStream(source, FileMode.OpenOrCreate, FileAccess.Read))
  20. {
  21. //2、创建一个写入的流
  22. using (FileStream fsWrite = new FileStream(target, FileMode.OpenOrCreate, FileAccess.Write))
  23. {
  24. byte[] buffer = new byte[1024 * 1024 * 5];
  25. //因为文件可能比较大,所以我们在读取的时候,应通过一个循环去读取
  26. while (true)
  27. {
  28. //返回这次实际读取到的字节数
  29. int r = fsRead.Read(buffer, 0, buffer.Length);//可能存在文件指针,有记忆功能,所以并不是一直读取(0,buffer.Length)
  30. Console.WriteLine(r);
  31. if (r == 0)
  32. {
  33. break;
  34. }
  35. fsWrite.Write(buffer, 0, r);//可能存在文件指针,有记忆功能,所以并没有覆盖
  36. }
  37. }
  38. }
  39. }
  40. }
  41. }

image.png

080_StreamReader和StreamWriter
image.png

  1. using System;
  2. using System.IO;
  3. using System.Text;
  4. namespace _80_StreamReaderStreamWriter
  5. {
  6. class Program
  7. {
  8. static void Main(string[] args)
  9. {
  10. //使用StreamReader来读取一个文本文件
  11. using (StreamReader sr = new StreamReader(@"C:\Users\46124\Desktop\CSharpTestOne.txt", Encoding.Default))
  12. {
  13. while (!sr.EndOfStream)
  14. {
  15. Console.WriteLine(sr.ReadLine());
  16. }
  17. //Console.WriteLine(sr.ReadToEnd());
  18. }
  19. //使用StreamWriter来写入一个文本文件 true:追加数据 false:如果文件不存在则新建,存在即覆盖
  20. using (StreamWriter sw = new StreamWriter(@"C:\Users\46124\Desktop\CSharpTestThree.txt", true))
  21. {
  22. sw.Write("使用StreamWriter写入的文本!!");
  23. }
  24. Console.WriteLine("写入成功");
  25. Console.ReadKey();
  26. }
  27. }
  28. }