• C# 中File和FileStream的用法


    原文:https://blog.csdn.net/qq_41209575/article/details/89178020

    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.代码部分
    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:UsersAdministratorDesktop1、练习1-3.avi";
                string videoNewPath = @"C:UsersAdministratorDesktop1.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);
    
                    }
    
                 }
                  
                }
     
  • 相关阅读:
    .Net项目模板(Project Template)
    撸码是需要直觉的
    一个简单的规则引擎例子
    CSRobot gen来了
    .Net项目模板进阶
    好用的验证框架FluentValidation(下)
    不一样的虚假(Bogus)和骗子(Faker)
    c#中的多义关键字
    CSRobot gen:mssqlc#类型映射
    CSRobot gen:mysql,pgc#类型映射
  • 原文地址:https://www.cnblogs.com/zhang1f/p/11761311.html
Copyright © 2020-2023  润新知