C#利用File方法对文件的操作总结(字节写入和读取)
作者:小马的棺材板 发布时间:2022-07-20 09:30:55
C#文件的读和写提供了非常多的方法基本一两行就可以搞定“读和写”,在编程里还是比较重要的
什么是读?
你的程序去读你磁盘里的文件
上面是写?
你的程序在你磁盘创建文件
有什么用?
可以保存数据,用户等2次打开时就不用重新加载,或者软件异常,把异常信息或日志信息等进行保存
@符作用:
路径使用是字符串类型,而路径有非常多的“ \”
而如\n表示的是换行,为了不让这些“\”起到转义的意思
在路径前使用@表示这字符串并不需要其转义
所以写路径必须得在前面加@符号,或者使用
两个“\\”代替 如:““E:\\1.txt””
如果路径特别长…不建议这样(简直就是脑血栓)
创建文件:
在E盘创建了一个名为1.txt的文本文件
File.Create(@"E:\1.txt");
创建成功
删除文件:
删除E盘下的1.txt文件
File.Delete(@"1.txt");
判断文件是否存在:
返回的是一个布尔值
bool a = File.Exists(@"E:\1.txt");
true 为存在
false 为不存在
和英语考试的判断题一样,对就T 错的就F…
上面把他删了,所以就不存在,false
也可以这样写:
if (File.Exists(@"D:\1.txt"))
{
Console.Write("文件存在");
}
else {
Console.Write("文件不存在");
}
复制文件:
把学习资料从E盘复制到D盘
File.Copy(@"E:\学习资料.zip",@"D:\学习资料.zip");
复制成功
移动文件:
所谓的移动也就是剪切的意思
File.Move(@"D:\1.txt", @"E:\1.txt");
D盘剪切到E盘
成功
写入:
C#提供了很多的写入方法,
都大同小异都写入的方式不一样而已
WriteAllText:直接写入
File.WriteAllText(@"E:\1.txt","6666");
把6666写入到E盘的1.txt里
注意:如果文件不存在就自动创建并且写入,还是比较方便的只有一行
WriteAllBytes:字节形式写入
string str = "小马哥的棺材板";
//创建写入的字符串
byte[] a = Encoding.Default.GetBytes(str);
//字符串转成字节
File.WriteAllBytes(@"E:\1.txt",a);
//写入
Encoding:表示编码格式
Default:默认编码
GetBytes:转成字节
写入成功!!
WriteAllLines:行的形式写入
需要注意的是第2个参数是一个字符串类型的数组
string[] a = { "1","2","3","4","5"};
File.WriteAllLines(@"E:\1.txt",a);
写入成功
AppendAllText:追加写入
上面的方法都是覆盖的写入,一般写日志文件都是使用追加写入
这样就不会覆盖了
原文本内容:
File.AppendAllText(@"E:\1.txt", "6666");
追加写入后:
可以注意到并没有换行,如果数据多了不好看
可以使用转义符进行换行
File.AppendAllText(@"E:\1.txt", "6666"+"\r\n");
效果:
居然可以写入文件当然也可以读取
读取:
Encoding:表示编码格式
Default:默认编码
ReadAllText:读取文本:
string str = File.ReadAllText(@"E:\1.txt", Encoding.Default);
Console.WriteLine(str);
读取成功!!
ReadAllLines:行的方式读取
string[] str = File.ReadAllLines(@"E:\1.txt", Encoding.Default); //编码格式默认
for (int i = 0; i <= str.Length - 1; i++)
{
Console.WriteLine(str[i]);
}
每一个元素代表一行
如果我只想拿到第一行的内容:
string[] str = File.ReadAllLines(@"E:\1.txt", Encoding.Default);
Console.WriteLine(str[0]);
ReadAllBytes:字节形式读取
byte[] a = File.ReadAllBytes(@"E:\1.txt");
//读取文件转成字节
string str = Encoding.Default.GetString(a);
//把字节转成字符串
Console.WriteLine(str);
来源:https://blog.csdn.net/dpc5201314/article/details/118914603


猜你喜欢
- MyBatis-Plus (简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效
- 手机号登录在现在的项目中用的场景非常多,实现起来也不难,今天我们就一起来通过演示实现登录过程。 一、首先需要注册个第三方的账户,比
- 为什么要用Flyway在日常开发中,我们经常会遇到下面的问题:自己写的SQL忘了在所有环境执行;别人写的SQL我们不能确定是否都在所有环境执
- 网上的文章基本上都是只有多数据源或只有动态数据源,而最近的项目需要同时使用两种方式,记录一下配置方法供大家参考。应用场景项目需要同时连接两个
- C# FileStream类在 C# 语言中文件读写流使用 FileStream 类来表示,FileStream 类主要用于文件的读写,不仅
- 目录1.项目需求描述2.整体思路3.功能实现1.项目需求描述通过订单号获取某系统内订单的详细数据,不需要账号密码的登录验证,但有图片验证码的
- 引言RecyclerView是在Android5.0版本作为support-v7的一个组件出现,高效替代了最初的ListView等列表组件。
- RestTemplate未设置超时时间,导致RabbitMQ队列大量堆积,消费者假死,不进行消费,类似线程堵塞。排查:从日志排查问题,在从进
- 本文实例为大家分享了java实现飞机游戏的具体代码,供大家参考,具体内容如下MyGameFrame类:主要的调用类package sc.wh
- 最近,由于公司项目中需要将系统内用户操作的所有日志进行转存备份,考虑到以后可能还需要还原,所以最后决定将日志数据备份到Excel中。 下面是
- 本文实例为大家分享了Android实现简单计时器的具体代码,供大家参考,具体内容如下布局在res/layout 下进行布局<?xml
- 前言我通常是不太关心代码的具体实现的,因为我的开发语言很杂,倾向于一些最简单通用的方式去解决。今儿不小心在群里看到一位朋友发了下面的java
- 在Controller层时,往往会需要校验或验证某些操作,而在每个Controller写重复代码,工作量比较大,这里在Springboot项
- 第一次是接触Lambda表达式是在TypeScript中(JavaScript的超集中),当时是为了让TypeScript的this方法外而
- Java的NIO中的管道,就类似于实际中的管道,有两端,一段作为输入,一段作为输出。也就是说,在创建了一个管道后,既可以对管道进行写,也可以
- 在这里就分享两条开发中曾经忽略的问题:1、Union(联合体)的字节对齐先看代码:#pragma pack(4)struct com{&nb
- 前言我们在日常开发中,经常会用到一个系统需要链接多个数据库来实现业务的需求,比如多个系统之间数据调用、两个数据之间同步等等。今天给大家分享使
- 目录Mybatis简介Mybatis开发步骤:Mybatis的映射文件概述Mybatis的增删改查操作MyBatis的核心配置文件概述MyB
- java多线程的同步方法实例代码先看一个段有关银行存钱的代码:class Bank { private int su
- 1.Feign传统方式的不足①.在微服务架构中,当我们使用Feign传统方式进行服务调用的时候,需要在每个服务消费者中添加FeignClie