C#中File和FileStream的用法

C#中File和FileStream的用法在近期的工作过程中发现自己的基础比较薄弱,所以最近在恶补基础知识。下面就对我所学习的File类和FileStream进行简单的总结。1.首先先介绍File类和FileStream文件流1.1File类,是一个静态类,支持对文件的基本操作,包括创建,拷贝,移动,删除和打开一个文件。File类方法的参量很多时候都是路径path。主要提供有关文件的各种操作,在使用时需要引用System.IO命名…

大家好,又见面了,我是你们的朋友全栈君。

在近期的工作过程中发现自己的基础比较薄弱,所以最近在恶补基础知识。下面就对我所学习的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类常用方法 

C#中File和FileStream的用法

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

因为刚开始学习所以有些不足,希望各位大佬可以指正。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/162851.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 音频放大器的设计

    音频放大器的设计摘要进入21世纪以后,各种便携式的电子设备成为了电子设备的一种重要的发展趋势。从作为通信工具的手机,到作为娱乐设备的MP3播放器,已经成为差不多人人具备的便携式电子设备。所有这些便携式的电子设备的一个共同点,就是都有音频输出,也就是都需要有一个音频放大器。从中可知,音频放大器的重要性不言而喻。因此,设计了由电流串联负反馈放大电路、电压并联负反馈放大电路以及OTL功率放大器三级组成的音频…

    2022年5月3日
    47
  • 由近期裁员想到的

    由近期裁员想到的经济形势一路走低,公司裁员的消息也偶尔听闻,其中闹的比较醒目的则是摩托罗拉移动的裁员。从报道来看,南京摩托罗拉移动的各位对这个公司还是很有些恋恋不舍的,甚至提出了希望再为公司工作一年的期望。具体情形其实不太了解,不妄发评论了,但这事再次提醒我们一个很本质的事情:职场如市场,本质上就是一场交换。员工可以跳槽,公司可以裁员,都是非常的正常。很多公司都会强调企业文化,希望能营…

    2022年7月17日
    16
  • BindingNavigator控件[通俗易懂]

    BindingNavigator控件[通俗易懂]WinForm之中BindingNavigator控件的使用在微软WinForm中,BindingNavigator控件主要用来绑定数据。可以将一个数据集合与该控件绑定,以进行数据联动的显示效果。如图下图所示:那么,下面我们就来用BindingNavigator控件做一下上图所示的效果。分析:该案例以BindingNavigator控件为主线,我们定义一个实体类

    2022年7月12日
    32
  • WebService客户端几种实现方式

    WebService客户端几种实现方式1。发布一个webservice服务。2。jdk原生调用方式和import生成代码3。cxf两种调用方式。4。axis和axis2调用方式5。httpClient调用方式。httpclient4.5.2httpmime4.5.2

    2022年7月13日
    15
  • Qt 之自定义搜索框

    Qt 之自定义搜索框简述关于搜索框,大家都经常接触。例如:浏览器搜索、Windows资源管理器搜索等。当然,这些对于Qt实现来说毫无压力,只要思路清晰,分分钟搞定。方案一:调用QLineEdit现有接口voidaddAction(QAction*action,ActionPositionposition)在QLineEdit的前/后添加部件,ActionPosition表示部件所在方位。QAction

    2022年7月13日
    20
  • android开发之Intent.setFlags()_让Android点击通知栏信息后返回正在运行的程序

    在应用里使用了后台服务,并且在通知栏推送了消息,希望点击这个消息回到activity,结果总是存在好几个同样的activity,就算要返回的activity正在前台,点击消息后也会重新打开一个一样的activity,返回好几次才能退出,而不能像qq之类的点击通知栏消息回到之前存在的activity,如果存在就不再新建一个activity说的有点绕,如果是遇到此类问题的肯定能懂,没遇到过

    2022年3月10日
    41

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号