C#文件读取

File

介绍

using System.IO;IO输入和输出

File:文件的一些读写操作的类,主要包括功能,文件读写、对文件的复制、剪切、删除、创建等操作

方法

cs 复制代码
  Create()创建一个文件流,指定文件位置,
  //文件位置可以是绝对路径,C:\Users\1\Desktop\1.txt就是绝对路径
  FileStream fileStream = File.Create(@"C:\Users\1\Desktop\1.txt");
cs 复制代码
//可以是相对路径1.txt默认清空下在bin--》debug文件下
FileStream fileStream2 = File.Create(@"1.txt");

//../1.txt相对于默认路径(debug)文件夹的上一层路径
FileStream fileStream2 = File.Create(@"../1.txt");

// ./也是默认路径
FileStream fileStream2 = File.Create(@"./2.txt");
fs.Close();//如果不加,会出现2.txt 正在使用中
cs 复制代码
//Copy把文件从参数1路径复制到参数2路径上
File.Copy(@"./2.txt",@"../2.txt");

 //Exists()判断路径下是否有文件
 File.Exists(@"../2.txt");

//Move把文件从参数1路径剪切到参数2路径上
File.Move(@"./txt", @"../3.txt");

//Delete删除指定路径下文件
File.Delete(@"../3.txt");

 //WriteAllText()以字符串的方法进行写入路径
 //参数1路径 参数2写入内容
 File.WriteAllText("1.txt", "aaaaa");
 File.ReadAllText("1.txt");

//WriteAllBytes()以字节的方式进行写入 参数1路径 参数2字节数组(---替换---)
// Encoding.UTF8.GetStrings() 把字符串转成字符串
//Encoding.UTF8.GetBytes() 把字符串转成字节数组
byte[]b=Encoding.UTF8.GetBytes("123");
File.WriteAllBytes("1.txt",b)

byte[]b2=File.ReadAllBytes(@"1.txt");//读取路径文本,转成字节数组
Console.WriteLine(Encoding.UTF8.GetString(b2));

 //WriteAllLines()以换行的形式进行写入
 string[] cs = new string[] {"木瓜星灵","你该死","!!!!!!" };
 File.WriteAllLines(@"1.txt",cs);
 //以换行的形式进行读取
 string[] ss= File.ReadAllLines(@"1.txt");
 foreach (var item in ss)
 {
     Console.WriteLine(item);
 }
 File.AppendAllText(@"1.txt", "what the hell?");

FileStream文件流

写法

cs 复制代码
//FileStream文件流
//参数1 指定文件流路径
//参数2 指定打开文件模式:FileMode.Open打开现有的文件,如果没有此文件,抛出异常
//FileMode.Create 如果存在1.txt会覆盖原先文件,如果没有创建一个新文件
//FileMode.OpenOrCreate 如果存在则打开,如果不存在则新建一个
//参数3:FileAccess文件权限:ReadWrite 具备文件读写权限、Read:只读权限,Write:写入权限
FileStream fileStream = new FileStream(@"1.txt",FileMode.OpenOrCreate,FileAccess.ReadWrite);

方法

cs 复制代码
 string s = "你好坤泽,小菜鸡";
 byte[]bs= Encoding .UTF8.GetBytes(s);//把字符串转成字节数组
//参数1写入字节数组,参数2是写入开始位置,
 fileStream .Write(bs, 0, bs.Length);
 fileStream.Flush();//清空缓存区,确保文件流写入文件中
 fileStream.Close();//关闭文件流

 fileStream = new FileStream(@"1.txt", FileMode.Open, FileAccess.ReadWrite);//严格来说,读取的时候文件打开方式选成Open

 byte[] bytes = new byte[fileStream.Length];//字节数组不能写太大,也不能写太小
 fileStream.Read(bytes, 0, bytes.Length);//把fileStream里面的数据读取到指定字节里面,从0开始读取,读取参数3的长度
 Console.WriteLine(Encoding.UTF8.GetString(bytes));//转成字符串打印
 fileStream.Close();
 //fileStream.Read(bs, 0, bs.Length); //把fileStream里面的数据读取到指定字节数组里面
 //Console.WriteLine(Encoding.UTF8.GetString(bs));

二进制数据读写操作

概念

二进制原始读写操作,通过BinaryWriter和BinaryReader进行实现,写入和读取性能比filestream高,写入数据类型可以是各种类型

BinaryWriter

BinaryReader

写入数据

cs 复制代码
 //1创建文件流,FileStream一般用于作为其他读写操作的文件流
 FileStream fs = new FileStream(@"1.txt",FileMode.Create,FileAccess.ReadWrite);
 //2创建写入流
 BinaryWriter bw = new BinaryWriter(fs);
 //3写入内容,传入一个字节数组(单独存单独取)
 //bw.Write(10);//写入整形数据
 //bw.Write(true );//写入bool数据
 //bw.Write("hello");
 //bw.Write(10.2);

 //写入数据,传递一个字节数组
 bw.Write(new UTF8Encoding().GetBytes("true"));//传入一个数组
 bw.Write(new UTF8Encoding().GetBytes("10"));
 bw.Write(new UTF8Encoding().GetBytes("你好"));
 fs.Flush();//清空缓存区
 fs.Close();//关闭文件流
 bw.Close();//关闭文件流

读取数据

cs 复制代码
   //创建文件流对象
   fs=new FileStream(@"1.txt",FileMode.Open,FileAccess.ReadWrite);
   //创建一个二进制读取对象
   BinaryReader br=new BinaryReader(fs);
   //一般不会采用单独读一个数据
   //Console.WriteLine(br.ReadUInt32());
   //Console.WriteLine(br.ReadBoolean());
   //Console.WriteLine(br.ReadString());
   //Console.WriteLine(br.ReadDouble());

 //使用一次读完,采用while循环去循环去读,知道把数据读完
 byte[] bytes=new byte[fs.Length];
 while (br.Read(bytes ,0,bytes .Length )>0)//等于0证明读完了
  {
     Console.WriteLine(Encoding.UTF8.GetString(bytes));
  }
 
 br.Close();
相关推荐
Dxy12393102162 小时前
Python线程锁:为什么多线程会“打架“,以及怎么解决
开发语言·前端·python
guygg883 小时前
人行走作用下板的振动响应 MATLAB 仿真
开发语言·matlab
小二·3 小时前
Next.js 15 全栈开发实战
开发语言·javascript·ecmascript
fox_lht3 小时前
15.3.改进我们之前的输入、输出项目
开发语言·后端·学习·rust
java1234_小锋3 小时前
LangChain4j 开发Java Agent智能体- 多模态支持
java·开发语言·langchain4j
凡人叶枫3 小时前
Effective C++ 条款23:宁以 non-member、non-friend 替换 member 函数
linux·开发语言·c++·嵌入式开发
张忠琳3 小时前
【Go 1.26.4】Golang Channel 深度解析
开发语言·后端·golang
盈建云系统3 小时前
B2B产品展示网站怎么做?从产品目录到询盘表单,企业获客页面搭建流程
开发语言·网站搭建·开发网站
不会C语言的男孩4 小时前
Linux 系统编程 · 第 4 章:文件属性与元数据
linux·c语言·开发语言
kernelcraft4 小时前
Boto3:Python 操作 AWS 的官方 SDK
开发语言·python·其他·aws