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


猜你喜欢
- 在android开发中,我们时常会遇到对字符串中某些固定的字段实现可点击和颜色的设置,现粘贴处我在开发中如何设置这些属性的。代码如下:pri
- Android对这种方法进行了封装,我们没有权限去调用这个方法,所以我们只能通过AIDL,然后利用Java的反射机制去调用系统级的方法。下面
- 平时项目中只要涉及表,那么一定能接触到众多各式各样的ID编号,博主整理一些常用的ID格式,整合一个ID生成工具类,供大家参考,如果有什么不足
- 本实例将显示类似于windows7提供的图片预览窗格效果,单击任意一张图片,可以在右侧显示该图片的预览效果。效果如图所示:具体实现方法:re
- Maven工程pom定义jdk版本今天把之前做的项目导进eclipse,然后发现报错,一些类在1.6中不支持,需要将JDK版本设置为1.7,
- 本文实例为大家分享了Java实现在线聊天功能的具体代码,供大家参考,具体内容如下效果关键代码创建Client.javaimport java
- C# 中有三种定时器,System.Windows.Forms 中的定时器和 System.Timers.Timer 的工作方式是完全一样的
- 本文实例讲述了Java使用TCP套接字实现多人聊天功能。分享给大家供大家参考,具体如下:废话不多说,直接开搞:先创建一个服务端:packag
- 1. 定义在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。2. 使用的
- HttpServletRequest对象代表客户端的请求,当客户端通过HTTP
- Application.Idle()方法表示:当应用程序处于空闲状态时执行相应代码。示例程序1、界面设计:一个简单的Lable控件2、代码u
- RN的打包,大家可以根据官网一步一步来,但这里有几个地方注意,一下简单介绍:生成一个签名密钥在项目的目录下打开cmd命令窗口输入一下命令运行
- 就是仿照现在扫一扫的形式,周围是半透明的遮挡,然后中间是全透明的,拍摄后只截取框内的内容查了很多博客,实现起来真的太复杂了,本人比较怕麻烦所
- strftime函数主要用于时间格式化,它的函数原型如下:size_t __cdecl strftime(char * __restrict
- 请求SpringBoot接受前台参数的六种方式,首先因为从前台发送的请求没有界面的话只能是从地址栏发送并且只能是Get请求,为了测试其他的请
- 使用GridView实现表格分割线效果,网格布局表格布局也是可以实现的。效果如下:1.主函数代码:package com.example.q
- 需求描述 今日需求是删除资源时同时删除与该资源绑定的角色数据,有两张表,资源表、
- 前言大家都知道,equals和hashcode是java.lang.Object类的两个重要的方法,在实际应用中常常需要重写这两个方法,但至
- 前言Activity是Android中一个很重要的概念,堪称四大组件之首,关于Activity有很多内容,比如生命周期和启动Flags,这二
- 简介Java 在 1.5 引入了泛型机制,泛型本质是参数化类型,也就是说变量的类型是一个参数,在使用时再指定为具体类型。泛型可以用于类、接口