C#文件读写小案例

2023-11-07

目录

1、驱动器管理类:

2、目录管理类:

3、文件管理类:

4、路径管理类:

5、FileStream类读取文件

6、StreamReader类读取文件

7、使用FileStream类写入文件,用FileStream类写入文件可以指定要写入的位置

8、StreamWriter类写入文件

9、读写二进制文件使用BinaryReader类和BinaryWriter类

 


 

1、驱动器管理类:

输出每一个硬盘驱动器的驱动器名称、驱动器类型、总空间大小及剩余空间大小:

            DriveInfo[] drives = DriveInfo.GetDrives();
            foreach (DriveInfo driver in drives)  //遍历每一个驱动器
            {
                Console.WriteLine("驱动器{0}:", driver.Name);
                if (driver.IsReady == true)
                {
                    Console.WriteLine("驱动器类型为{0},总空间为{1},剩余空间为{2}",driver.DriveType,driver.TotalSize,driver.TotalFreeSpace);
                    Console.ReadKey();
                }
            }

 

2、目录管理类:

(1)使用Directory类创建目录及删除目录

            //创建目录
            if (Directory.Exists("e:\\C#程序设计")){
                Console.WriteLine("目录已经存在!");
            }
                
            else
            {
                Directory.CreateDirectory("e:\\C#程序设计");
                Console.WriteLine("目录被成功创建!");
                
            }

            //删除目录
            Directory.Delete("e:\\C#程序设计");
            Console.WriteLine("目录被删除!");
            Console.ReadKey();

(2)使用DirectoryInfo类创建目录及删除目录

            //创建目录
            DirectoryInfo di = new DirectoryInfo("e:\\C#程序设计");
            if(di.Exists)
                Console.WriteLine("目录已经存在!");
            else
            {
                di.Create();
                Console.WriteLine("目录被成功创建!");
                
            }
            //删除目录
            di.Delete();
            Console.WriteLine("目录被删除!");
            Console.ReadKey();

 

3、文件管理类:

下面的代码用于在前面创建好的“E:\C#程序设计”目录的基础上,创建文件myfile1.txt,并向文件中追加文本,以及完成文件间的复制。

            //创建文件
            if(!File.Exists(@"e:\C#程序设计\myfile1.txt"))
            {
                File.Create(@"e:\c#程序设计\myfile1.txt");
                Console.WriteLine("文件创建成功!");
            }

            //向文件中追加文本
            //注:当myfile1.txt文件存在时,可以这样直接追加,myfile1.txt文件不存在不能直接追加文本
            File.AppendAllText(@"e:\C#程序设计\myfile1.txt",  "hello , c#!");
            
            //将文件myfile1.txt复制给文件myfile2.txt
            File.Copy(@"e:\C#程序设计\myfile1.txt", @"e:\C#程序设计\myfile2.txt");
            Console.ReadKey();

 

4、路径管理类:

定义两个路径pathStr1和pathStr2,将其合并后的值保存到路径pathStr中,最后输出pathStr路径中的信息

            String pathStr1 =@"e:/ C#程序设计";  //绝对路径
            String pathStr2 ="myfile.tst";  //相对路径
            String pathStr = Path.Combine(pathStr1, pathStr2);
            Console.WriteLine("该路径中的文件名为{0}\n 文件所在目录为{1}",Path.GetFileName(pathStr),Path.GetDirectoryName(pathStr));
            Console.ReadKey();

 

5、FileStream类读取文件

            byte[] byData = new byte[100];
            char[] charData = new char[1000];
            public void Read()
            {
                try
                {
                    FileStream file = new FileStream(@"E:\C#程序设计\test.txt", FileMode.Open);
                    file.Seek(8, SeekOrigin.Begin);
                    //byData传进来的字节数组,用以接受FileStream对象中的数据,第2个参数是字节数组中开始写入数据的位置,它通常是0,表示从数组的开端文件中向数组写数据,最后一个参数规定从文件读多少字符.
                    file.Read(byData, 0, 100);
                    Decoder d = Encoding.Default.GetDecoder();
                    d.GetChars(byData, 0, byData.Length, charData, 0);
                    Console.WriteLine(charData);
                    file.Close();
                }
                catch (IOException e)
                {
                    Console.WriteLine(e.ToString());
                }
            }

6、StreamReader类读取文件

注:如果要读取或写入的文件只包含纯文本数据,那么可以使用StreamReader类和StreamWriter类

读取test.txt文件中的所有文本,并将其输出

            StreamReader sr = new StreamReader(@"e:\C#程序设计\test.txt",Encoding.UTF8);
            string str = sr.ReadToEnd();
            Console.WriteLine("读取整个文本文件的输出结果为{0}",str);
            Console.ReadKey();
            sr.Close();

 

7、使用FileStream类写入文件,用FileStream类写入文件可以指定要写入的位置

此时的内容追加到文件的末尾

            FileStream fs = new FileStream("E:\\ak.txt", FileMode.Append, FileAccess.Write);
            //获得字节数组
            byte[] data = System.Text.Encoding.Default.GetBytes("Hello World!");
            //开始写入
            fs.Write(data, 0, data.Length);
            //清空缓冲区、关闭流
            fs.Flush();
            fs.Close();

 

8、StreamWriter类写入文件

注:如果要读取或写入的文件只包含纯文本数据,那么可以使用StreamReader类和StreamWriter类

(1)写入一个字符,写入一个字符串或者是一个字符数组,也可以一次仅写入字符数组中的一部分,

此时内容会追加到文件末尾

            StreamWriter sw = new StreamWriter(@"e:\C#程序设计\test.txt",true);
            sw.Write('a');  
            sw.Write("hello");  

            char[] charArray = { 'a','b','c','d'};
            sw.Write(charArray);  
            sw.Write(charArray,1,2);  //写入字符数组的部分,从下标1开始,写入2个字符即“bc”
            sw.Close();

(2)如果是基于FileStream创建的StreamWriter对象,最后要及时关闭掉StreamWriter和FileStream两个对象,注意关闭顺序,应该先关闭StreamWriter对象,再关闭FileStream对象。

注:此时修改会覆盖原文件

            FileStream fs = new FileStream(@"e:\C#程序设计\test.txt", FileMode.Create,FileAccess.Write);
            StreamWriter sw = new StreamWriter(fs,Encoding.UTF8);

            string[] set = {"abc","123","789"};

            foreach (string s in set) {

                //注:这样写入是直接将原来的test.txt文件覆盖了,小心写入
                sw.Write(s);
            }
            sw.Close();
            fs.Close();

 

9、读写二进制文件使用BinaryReader类和BinaryWriter类

当输入1时,则进入输入学生信息状态,将输入的学生信息保存到e:\student.dat数据文件中;

当输入2时,则在控制台上直接显示输出所有学生的信息

//入口函数Main()的代码
        static void Main(string[] args)
        {            
            Test t = new Test();
            Console.WriteLine("写入学生信息输入1,读取学生数据输入2,请输入:");
            string input = Console.ReadLine();
            while (input!=null&&input!="") {
                switch (input)
                {
                    case "1":
                        t.WriteStudent();
                        break;
                    case "2":
                        t.ReadStudent();
                        break;
                    default:
                        Console.WriteLine("您的输入不正确");
                        break;
                }
                input = Console.ReadLine();
            }            
            Console.ReadKey();
        }


        //文件读写类
        class Test
        {
            string stuNumber = "", stuName = "", student = "";
            //写方法
            public void WriteStudent() {
                Console.WriteLine("请输入学生的学号:");
                stuNumber = Console.ReadLine();
                Console.WriteLine("请输入学生的姓名:");
                stuName = Console.ReadLine();
                student = string.Format("学号:{0}\t  姓名:{1}",stuNumber,stuName);

                FileStream fs = new FileStream(@"e:\student.dat",FileMode.Append,FileAccess.Write);
                BinaryWriter bw = new BinaryWriter(fs);
                bw.Write(student);
                bw.Close();
                fs.Close();                
            }

            //读方法
            public void ReadStudent()
            {
                FileStream fs = new FileStream(@"e:\student.dat",FileMode.Open,FileAccess.Read);
                BinaryReader br = new BinaryReader(fs);
                fs.Position = 0;
                while (fs.Position<fs.Length)
                {
                    student = br.ReadString();
                    Console.WriteLine(student);
                }
                br.Close();
                fs.Close();
            }
        }

 

 

 

 

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C#文件读写小案例 的相关文章

  • jdk17安装及环境变量的配置

    jdk17安装及环境变量的配置 跳转oracle官方页面 点击直接下载Windowsjdk17 1 点击下载好的文件 然后下一步 2 在该页面中可以更改jdk的安装目录 默认是C盘 3 安装成功 安装成功之后 对其进行环境变量的配置 4 我
  • RFID系统在物流仓储中的应用

    RFID系统是一种无线识别技术 最近成为物流仓储行业的热门话题 本文将介绍RFID系统在物流仓储中的应用 包括如何使用RFID标签进行物流管理 如何使用RFID技术提高仓库的安全性 并细述RFID技术在物流仓储中的优势 除此之外 本文还会探
  • 华为od机考真题-报数游戏

    while 1 try m int input if 1 gt m or m gt 100 print ERROR else 模拟1 100的圈 nums
  • keil使用指南

    keil使用指南 1 项目的创建 头文件 1 项目的创建 1 首先创建文件夹 2 打开keil软件而后 创建新项目 并定位到1创建的文件夹 3 创建文件 并将文件添加到项目中 4 勾选hex文件生成 5 项目demo编写与编译 编译当前所在
  • 实战wxPython:051- 自定义控件

    前面系列文章中 我们介绍了wxPython提供各种的各种控件 在一般情况下可以满足我们开发应用的各种需求 但是在一些情况下 比如对按钮的美化 一个可以显示CPU占用率的控件等等 这首就需要自定义的控件 才能满足要求 自定义控件可以通过两种方
  • Postgresql 学习记录,模式,分区表,触发器,事务,窗口函数,视图,建表,约束等

    Postgresql 学习记录 模式 分区表 触发器 事务 窗口函数 视图 建表 约束等 PostgreSQL使用一种客户端 服务器的模型 一次PostgreSQL会话由下列相关的进程 程序 组成 一个服务器进程 它管理数据库文件 接受来自
  • 将word文档转换为图片格式的PDF

    0x00 前言 编写一篇文档后 往往会通过转为pdf版本后发布来避免在不同环境下格式出现混乱的情况 但这样操作转出pdf文档可以通过普通的pdf阅读器进行文本的抓取 不能达到我们想要保护知识产权的想法 因此在这里推出一篇如何将word文档转
  • 设计模式之(二)---代理模式Proxy Pattern

    什么是代理模式呢 我很忙 忙的没空理你 那你要找我呢就先找我的代理人吧 那代理人总要知道 被代理人能做哪些事情不能做哪些事情吧 那就是两个人具备同一个接口 代理人虽然不能干活 但是被 代理的人能干活呀 比如西门庆找潘金莲 那潘金莲不好意思答
  • 前端优化-WEB综合

    开启 gzip 压缩 gzip 是 GNUzip 的缩写 最早用于 UNIX 系统的文件压缩 HTTP 协议上的 gzip 编码是一种用来改进 web 应用程序性能的技术 web 服务器和客户端 浏览器 必须共同支持 gzip 目前主流的浏
  • object...args参数

    Java object args参数 Java反射中用到方法public Object newInstance String className Object args 该方法中使用了object args参数 也可以写成object ar
  • 认清现实重新理解游戏的本质

    认清现实重新理解游戏的本质 OVERVIEW 认清现实重新理解游戏的本质 现实 两条小路的启发 四个动机 1 当前的学习任务或工作任务太艰巨 2 完美主义 3 对未来太过于自信 无知 4 大脑小看未来的收益 四个方法 1 让未来的收益足够巨
  • R语言 时间序列ARIMA模型方法

    原理什么的百度一搜一堆 看不明白 先学会用这个工具吧 ARIMA 全称为自回归积分滑动平均模型 Autoregressive Integrated Moving Average Model 简记ARIMA 是由博克思 Box 和詹金斯 Je
  • 使用git提交代码到gerrit

    系统 Linux 需要安装 git 第一步 cd mkdir learn git cd learn git 注意 下面的用户名和邮箱和gerrit网站的账号一定要相同 git config global user name 用户名 git
  • python爬取百度使用kw关键字爬取时出现,百度安全验证,解决方法

    python爬取百度使用kw关键字爬取时出现 百度安全验证 解决方法 之前爬取百度用kw时的代码 没有任何问题 import requests url http www baidu com s headers User Agent Mozi
  • 工具类用于ajax使用json请求时返回一个json

    package com noe utils import java util HashMap 工具类 封装响应内容 会被转成json响应 MyStatus ok gt new MyStatus 0 gt code 0 new MyStatu
  • Jenkins部署及代码静态检查工具Checkstyle集成

    CheckStyle是SourceForge下的一个项目 提供了一个帮助JAVA开发人员遵守某些编码规范的工具 接下来给大家讲下如何在jenkins 我是在tomcat下安装的jenkins 集成checkstyle 构建项目并发送邮件 一
  • Face Alignment / Human Pose Estimation [CVPR‘23, ECCV‘22, NeurIPS‘22]

    CVPR 23 accepted paper list Facial Landmark Face Alignment 论文较少 CVPR 23 3篇 值得关注的子领域 Synthetic Data STAR Loss Reducing Se
  • Service层有多个查询,若依(ruoyi)分页失灵?如何解决呢?

    Service层有多个查询 若依分页失灵 教你如何解决 情景一 当Service层只有一个查询时 若需要分页 只需要在Controller层做以下操作 添加继承BaseController中的startPage 和getDataTable
  • Linux共享内存的查看和删除

    使用的总结 1 共享内存查看 命令 ipcs m Shared Memory Segments key shmid owner perms bytes nattch status 0x00000000 1867776 root 600 39
  • linux ikev1切换到ikev2,IKEv2与IKEv1的差异.doc

    IKEv2与IKEv1的差异 IKEv2与IKEv1的差异IKEv2与IKEv1的差异 摘自RFC4306 附录 A 1 To define the entire IKE protocol in a single document repl

随机推荐

  • 教你动手移植RT-Thread到国产MCU

    摘要 现在芯片价格不断上涨 国内很多厂商也在不断的找替换方案 以ST为例 一个芯片涨了十几倍 蛋疼 最近刚好有机会拿到国产芯片MCU 兆易创新的评估板 GD32350R 板载资源如下 硬件 描述 芯片型号 GD32F350R8T6 CPU
  • AD出Gerber,keepout 不显示(无数据、无外形层)

    AD出Gerber keepout 不显示 无数据 无外形层 版本 16 右键选中keepout 点击 Find Similar Objects 下一步 作如下红框内选择 如图勾选选中板框对象 点击 确定 下一步 先点击变为 True 然后
  • oauth2授权码模式遇到的坑,1.走网关无法返回授权码 2.refresh_token新token丢失用户信息

    主要有2个坑 1 通过网关访问 oauth authorize的时候 无法跳转到redirect uri返回授权码 2 访问 oauth token 刷新token的时候 新的token解析后用户信息丢失 用户信息变成了用户名 问题一 通过
  • R语言中的函数5:purrr:map()

    文章目录 前言 map x f map2 x y f pmap I f 数据准备 map 测试 map2 测试 pmap 测试 map lgl map2 lgl pma lgl map chr map2 chr pmap chr map d
  • 可以把将日文汉字转换成平假名、片假名、罗马音的KaKaSi

    了解它 KAKASI Kanji Kana Simple Inverter 是语言处理过滤器 可以将 日文汉字 转换成 平假名 片假名或Romaji 可以 方便阅读日文文本 以及 给日语学习者提供便利 比如把漢字 转换成 kanji 例子
  • java web 实战开发经典_java web 开发实战经典(一)

    一 jsp三种Scriptlet 脚本小程序 1 定义局部变量 编写语句等 out println str 编写语句 gt 2 定义全局变量 方法和类 虽然此方可以编写类 但不建议使用 我们一般通过JavaBean的形式调用类 public
  • 区块链学术会议/研究团队汇总

    欢迎评论补充 共建区块链学术生态 一 常见区块链文章发布会议 期刊 领域 简称 全称 CCF Level 备注 网络与信息安全 USENIX Security CCF A TIFS CCF A S P CCF A CCS CCF A Jou
  • 开窗函数 OVER(PARTITION BY)函数介绍

    开窗函数 分析函数用于计算基于组的某种聚合值 它和聚合函数的不同之处是 对于每个组返回多行 而聚合函数对于每个组只返回一行 开窗函数指定了分析函数工作的数据窗口大小 这个数据窗口大小可能会随着行的变化而变化 排序 即便值一样 也不会出现重复
  • java与数据库的相关小知识

    1 软编码链接数据库 public class DBManager private Connection con public Connection getCon String driverClass null String jdbcUrl
  • 实现物体的移动--刚体和代码中操控位置移动

    文章目录 实现物体的移动 先让物体有碰撞体积 给物体绑定刚体 实现物体的移动 先让物体有碰撞体积 给物体绑定刚体 其他的属性和使用方法可以到文档里查看 文档真的超级详细 但是光有碰撞规则是不行的 我们要为它加一个刚体 将对应函数绑定好 然后
  • 计算机网络设置中如何删除家庭组,【求助】Windows无法从该家庭组中删除你的计算机...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 echo 服务名称fdPHost 显示名称Function Discovery Provider Host 进程svchost exe echo DEMAND或DISABLED或AUTO 手动
  • 树莓派 安装Arch Linux ARM

    首先 需要一个linux环境 archlinuxarm系统的安装需要用linux环境复制文件 把sd卡或tf卡连接到装有linux环境的电脑上 首先 确定自己树莓派的型号是b 2b 还是3b 选择合适版本 打开终端 并获得超级权限 sudo
  • Sonar Java默认扫描规则

    规则如下 equals should not be used to test the values of Atomic classes equals 方法不应该用在原子类型的数据上 如 AtomicInteger AtomicLong At
  • MCDF实验——Lab4

    在之前的Lab3中 通过一个初具规模的MCDT的验证环境 学习到 验证环境按照隔离的观念 应分为硬件DUT 软件验证环境 和处于信号媒介的接口interface 对于软件验证环境 需要经历建立阶段 build 连接阶段 connect 产生
  • 浅谈项目售前调研

    一 概述 说到软件项目的售前调研工作 可能还得先谈谈售前顾问这个重要的角色 在IT软件行业 售前顾问位于职业金字塔顶端 是项目开发 实施人员与销售人员间的纽带和桥梁 在销售人员眼中 售前顾问扮演的是技术专家的角色 而在项目实施和开发人员眼中
  • 中兴网络设备交换机路由器查看日志命令方法

    描述 中兴网络设备交换机路由器查看日志命令方法 命令 show logfile
  • 小程序如何实现本地去水印

    自媒体时代 很多人都进行伪原创 但是有些视频本身就有水印的 这个时候我们怎么办 很多人都不懂这个方法 所以导致很多人不会使用 一般都是电脑操作 那我们就没有办法了吗 今天介绍的就是小程序如何实现本地去水印 我们也知道FFmpeg命令 去掉视
  • 波形分析软件 android,新版 PicoScope 软件提供更出色的波形分析和功能 – 免费获取!...

    全球领先的 PC 示波器制造商 Pico Technology Ltd 发布了 PicoScope 软件 6 11 7 版 此版本的 PicoScope 可为研发新一代电气和电子技术的工程师 科学家 技术人员和研究人员提供重要的新功能 本文
  • wifi感知---csi技术

    CSI在WiFi研究领域指Channel State Information 也就是通过接收到的WiFi信号来估计WiFi信号的传播信道长什么样子 它表征了一系列影响的综合 例如散射 衰落 能量随着距离的衰减 目前人们可以从CSI里提取到很
  • C#文件读写小案例

    目录 1 驱动器管理类 2 目录管理类 3 文件管理类 4 路径管理类 5 FileStream类读取文件 6 StreamReader类读取文件 7 使用FileStream类写入文件 用FileStream类写入文件可以指定要写入的位置