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();