C#中File和FileStream的用法
原创 忆汐辰 发布于2019-04-10 11:34:23 阅读数 5841 收藏
展开

在近期的工作过程中发现自己的基础比较薄弱,所以最近在恶补基础知识。下面就对我所学习的File类和FileStream进行简单的总结。
1.首先先介绍File类和FileStream文件流

1.1  File类,是一个静态类,支持对文件的基本操作,包括创建,拷贝,移动,删除和打开一个文件。File类方法的参量很多时候都是路径path。主要提供有关文件的各种操作,在使用时需要引用System.IO命名空间。
 1.2  FileStream文件流 只能处理原始字节(raw byte)。FileStream 类可以用于任何数据文件,而不仅仅是文本文件。FileStream 对象可以用于读取诸如图像和声音的文件,FileStream读取出来的是字节数组,然后通过编码转换将字节数组转换成字符串。

1.3 区别:file:是一个文件的类,对文件进行操作的;filestream:文件流.对txt,xml等文件写入内容的时候需要使用的一个工具.打个形象的比喻.file是笔记本,需要filestream的这个笔才能写.
2.代码部分

2.1 File类创建Txt

string path = @"C:\Users\Administrator\Desktop\1.txt";
       File.Open(path, FileMode.OpenOrCreate);

2.2 File类Txt拼接内容

List<string> users = new List<string>();
                users.Add("张三|1000");
                users.Add("李四|10000");
                users.Add("王五|5000");
                users.Add("赵六|6000");
                 File.AppendAllLines(path, users, Encoding.Default);

2.3  File类字节形式读取txt文档

byte[] buttf = File.ReadAllBytes(path);
    string str = Encoding.Default.GetString(buttf, 0, buttf.Length);

2.4 File类实现txt员工工资加倍

string[] filestr = File.ReadAllLines(path, Encoding.Default);
       for (int i = 0; i < filestr.Length; i++)
         {
            string[] str = filestr[i].Split('|');
            filestr[i] = str[0] + "|" + (Convert.ToDouble(str[1]) * 2).ToString();
          }
         File.AppendAllLines(path, filestr, Encoding.Default);

2.5 File类常用方法

3.文件流

3.1文件流文字形式读取

byte[] bytsize = new byte[1024 * 1024 * 5];
                using (FileStream stream = new FileStream(path, FileMode.OpenOrCreate,FileAccess.ReadWrite))
                {
                    while (true)
                    {
                        int r = stream.Read(bytsize, 0, bytsize.Length);
                        //如果读取到的字节数为0,说明已到达文件结尾,则退出while循
                        if (r == 0)
                        {
                            break;
                        }
     
                        string str = Encoding.Default.GetString(bytsize, 0, r);
                        Console.WriteLine(str);
                    }
                }

3.2文件流文字形式写入

string str = "今天天气好晴朗,处处好风光";
                byte[] buttf = Encoding.Default.GetBytes(str);
                //文件流的写入
                using (FileStream fscreat = new FileStream(path, FileMode.Append, FileAccess.Write))
                {
     
                    fscreat.Write(buttf, 0, buttf.Length);
                }

3.3文件流视频形式复制

byte[] bytsize = new byte[1024 * 1024 * 5];       
    string videoPath = @"C:\Users\Administrator\Desktop\1、练习1-3.avi";
                string videoNewPath = @"C:\Users\Administrator\Desktop\1.avi";
                //创建读取流
                using (FileStream fsread=new FileStream(videoPath,FileMode.Open,FileAccess.Read))
                {
                    //创建写入流
                    using (FileStream fswrite=new FileStream(videoNewPath,FileMode.OpenOrCreate,FileAccess.Write))
                    {
                          while (true)
                      {
                        //返回实际读取到的字节
                        int r = fsread.Read(bytsize, 0, bytsize.Length);
                       //当字节位0的时候 证明已经读取结束
                        if(r==0){
                            break;
                        }
                        fswrite.Write(bytsize,0,r);
      
                    }
                 }
                    
                }

因为刚开始学习所以有些不足,希望各位大佬可以指正。
————————————————
版权声明:本文为CSDN博主「忆汐辰」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_41209575/article/details/89178020

最新文章

  1. PE文件格式(加密与解密3)(一)
  2. BZOJ1367——[Baltic2004]sequence
  3. 高级选择器querySelector和querySelectorAll
  4. AngularJS~大话开篇
  5. 重新开始学习javase_集合_Map
  6. linux 启动network后报错:device eth0 does not seem to be present, delaying initialization
  7. 调试EF源码
  8. iBeacon怎样工作
  9. repeater操作
  10. Hello World! 2010年山东省第一届ACM大学生程序设计竞赛
  11. WebService 用户名密码验证
  12. FZU 2240 Daxia &amp; Suneast&#39;s problem
  13. Linux系统迁移
  14. WCF入门, 到创建一个简单的WCF应用程序
  15. 201521123014 《Java程序设计》第5周学习总结
  16. android Fragment的数据传递
  17. SpringCloud的服务注册中心(三) - 进一步了解 Eureka
  18. python,可变对象,不可变对象,深拷贝,浅拷贝。
  19. LibreOffice字体问题解决;从window复制到Ubuntu
  20. qmake-how to

热门文章

  1. 【CSS属性#1】
  2. 国内免费可用的STUN服务器(webrtc 必备)
  3. 类型不匹配 java.lang.IllegalArgumentException : argument type mismatch
  4. cascadia-code 程序员友好字体
  5. agc026F Lotus Leaves
  6. Python - int()
  7. VBA 学习笔记 - 消息框
  8. jq基础(2)
  9. 《FA分享》---创业学习--训练营直播第二课--HHR
  10. 9000端口号被上一个ip地址占用,需要reboot才可以恢复正常ip端口问题