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();
相关推荐
一颗青果几秒前
短线重连代码实现
开发语言·网络·c++
AI视觉网奇1 分钟前
audio2face 实时驱动 2026笔记
开发语言·python
陳10308 分钟前
C++:list(1)
开发语言·c++
小CC吃豆子9 分钟前
如何在 VS Code 中调试 C++ 程序?
开发语言·c++
Overt0p11 分钟前
抽奖系统(7)
java·开发语言·spring boot·redis·tomcat·rabbitmq
JANG102412 分钟前
【Qt】项目打包
开发语言·qt
DowneyJoy14 分钟前
【Unity通用工具类】列表扩展方法ListExtensions
unity·c#·交互
CoderCodingNo19 分钟前
【GESP】C++五级/六级练习题(前缀和/动态规划考点) luogu-P1719 最大加权矩形
开发语言·c++·动态规划
学嵌入式的小杨同学22 分钟前
循环队列(顺序存储)完整解析与实现(数据结构专栏版)
c语言·开发语言·数据结构·c++·算法
点云SLAM23 分钟前
C++ 设计模式之工厂模式(Factory)和面试问题
开发语言·c++·设计模式·面试·c++11·工厂模式