C# File类中的文件读写方法详解
作者:微小冷 发布时间:2023-04-14 09:52:08
C#
提供了多种操作文件的方案,File
类中封装的静态方法,接口封装得比较人性化,隐藏了具体实现的细节,主要包括读取、写入以及追加,这些函数如下
类别 | 字节读写 | 字符串列表 | 字符串 | |
---|---|---|---|---|
读取 | ReadAllBytes | ReadAllLines | ReadAllText | ReadLines |
写入 | WriteAllBytes | WriteAllLines | WriteAllText | |
追加 | AppendAllLines | AppendAllText | AppendText |
这些方法大部分都有其异步模式,以RaadAllBytes为例,其对应的异步方法为ReadAllBytesAsync,即在后面加一个Async。
这些方法中,读取操作需要至少输入一个字符串,表示文件路径,其返回值为字节数、字符串或者字符串列表;追加和写入操作,至少需要输入一个文件路径以及将要写入的内容,根据函数类别不同,可以是字节数组、字符串或者字符串列表。
下面在顶级语句中,对这些函数做一些基础的演示。
字节读写
ReadAllBytes和WriteAllBytes是用于读写字节数组的方法,
byte[] data = new byte[1024];
for (int i = 0; i < 1024; i++)
data[i] = (byte)i;
File.WriteAllBytes("test.bin", data);
运行之后,将在运行目录创建一个test.bin文件,接下来通过ReadAllBytes对其读取。
data = File.ReadAllBytes("test.bin");
foreach (var d in data)
Console.Write($"{d}, ");
其输出结果为0-255的数字,类似下面这样,这是在创建文件时,已经把i转换为了字节,1个字节只有8位,最大值就是255。
...251, 252, 253, 254, 255, 0, 1, 2, 3, 4, 5...
字符串读写和追加
通过xxxAllText可以直接读取文本文档,这些函数提供了两个重载,一种只需要输入文件名和写入内容,另一种需要指定编码方式。
File.WriteAllText("test.txt", "if u miss the train i'm on, ");
File.AppendAllText("test.txt", "u will know that i'm gone");
var s = File.ReadAllText("test.txt");
Console.WriteLine(s);
输出结果为
if u miss the train i'm on, u will know that i'm gone
如果指定编码方式,尽管对英文来说可能无所谓,但编码不匹配,可能导致出现乱码,示例如下
File.WriteAllText("test.txt", "桃李春风一杯酒");
File.AppendAllText("test.txt", "江湖夜雨十年灯", Encoding.Unicode);
var s = File.ReadAllText("test.txt");
Console.WriteLine(s);
效果为
桃李春风一杯酒_lVnY?ASt^op
字符串数组
xxxAllLines可以操作字符串数组,或以字符串为元素的其他可迭代对象。
string[] poem0 = new string[] { "我居北海君南海", "寄雁传书谢不能" };
string[] poem1 = new string[] { "桃李春风一杯酒", "江湖夜雨十年灯" };
File.WriteAllLines("lines.txt", poem0);
File.AppendAllLines("lines.txt", poem1);
var s = File.ReadAllLines("lines.txt");
foreach (var item in s)
Console.WriteLine(item);
效果如下
我居北海君南海
寄雁传书谢不能
桃李春风一杯酒
江湖夜雨十年灯
来源:https://blog.csdn.net/m0_37816922/article/details/130667426
猜你喜欢
- 1、public String(char[] c,begin,length).从字符数组c的下标begin处开始,将长度为length的字符
- 一、工具类代码public class TaskHelper {#region 多线程操作 &nbs
- package com.abc.dao;import java.sql.Connection;import java.sql.DriverM
- 本文提纲版本约定JDK:8Servlet:4.xtomcat:9.x✍正文什么样的答案终身难忘?学生时代关于记忆经常能听见两种论调:死记硬背
- 最大数给定一组非负整数 nums,重新排列每个数的顺序(每个数不可拆分)使之组成一个最大的整数。注意:输出结果可能非常大,所以你需要返回一个
- @Valid:@Valid注解用于校验,所属包为:javax.validation.Valid。① 首先需要在实体类的相应字段上添加用于充当
- 1.算法效率算法效率分析分为两种:第一种是时间效率,第二种是空间效率。时间效率被称为时间复杂度,而空间效率被称作空间复杂度。时间复杂度主要衡
- Spring Boot如何实现分布式锁的自动释放在分布式系统中,为了保证数据的一致性和可靠性,常常需要使用分布式锁。在实际开发中,我们可以使
- 数组的用处是什么呢?——当你需要将30个数进行大小排列的时候,用数组这样的数据结构存储是个很好的选择,当你是一个班的班主任的时候,每次要记录
- 1、检测权限因为dump系统lsass内存和sam注册表需要管理员权限,所以首先需要对当前进程上下文权限做判断。public static
- 一、文件的编码package com.study.io;/*** 测试文件编码*/public class EncodeDemo {/***
- 一、前言二、案例需求1.编写login.html登录页面,username&password两个输入框2.使用Druid数据库连接池
- 23种设计模式第十九篇:java责任链模式定义:使多个对象都有机会处理请求,从而避免了请求的发送者和接收者之间的耦合关系。将这些对象连成一条
- 解决方法有如下两种:第一种如果你 repo sync 了 android 的整个源码,那么可以直接把你的 app 放到 /packages/
- Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中的配置管理、服务发现、断路器、智能
- 1、static是什么意思?static 关键字表明一个成员变量或者是成员方法可以在没有所属的类的实例变量的情况下被访问。例如Main类pa
- 一、模糊查询的几种实现方式1.concat函数和#{}拼接的方式student_name like concat('%',#
- RPC是远程过程调用的简称,广泛应用在大规模分布式应用中,作用是有助于系统的垂直拆分,使系统更易拓展。Java中的RPC框架比较多,各有特色
- 您可以通过为LINQ库不提供的操作添加新运算符,或者通过创建自己的标准查询运算符实现来提高可读性和性能,从而扩展Rx。 编写自定义版本的标准
- 一、获取系统当前时间long startTime = System.currentTimeMillis(); //获取开始时间doSomet