7.30 C#学习笔记(文件读写IO)
·
在 C# 中,文件操作是常见的任务,包括文件的读取、写入、创建和删除等。路径处理是文件操作的基础,正确处理路径可以避免路径错误和程序崩溃。
获取路径
绝对路径:
//对文件执行操作 提供路径 这种路径写法 绝对路径 缺点路径固定 程序发给别人路径不一样程序就不能跑
FileInfo fi = new FileInfo("D:\\work\\7.30 拆箱装箱 Equals与== 文件读取IO xml文件 事件Event\\3. 文件读取IO\\写文件.txt");
获取动态路径:
使用 Directory.GetCurrentDirectory() 获取当前程序的运行目录。
//这种写法 路径不会写死 会根据运行此程序的路径 获取动态的路径
string path = Directory.GetCurrentDirectory() + "\\写文件.txt";
创建文件:
已知上述的路径中不存在"写文件.txt"文件,那就创建一个。
//创建文件夹 当路径不存在时 会创建一个
fi.Directory.Create();
文件操作
写数据:
1.打开文件 确定文件流 是写入数据还是读数据 写数据
// 1. 打开文件 确定文件流 是写入数据还是读数据 写数据
FileStream stream = fi.OpenWrite();
2.写数据
// 2. 写数据
byte[] bytes = { 1, 2, 3, 4, 5, 6, 7, 8 };
// Write 写入数据 bytes 要写书的数据 写多少? 0 从0开始 写进去bytes.Length 个
stream.Write(bytes, 0, bytes.Length);
3. 关闭文件流 释放掉与之关联的所有资源
// 3. 关闭文件流 释放掉与之关联的所有资源
stream.Close();
Console.WriteLine("写入成功");
读数据:
1. 打开文件流 确定是读还是写 读数据
// 1. 打开文件流 确定是读还是写 读数据
FileStream streamRead = fi.OpenRead();
2. 将读到的数据放到暂存区 不确定能读取到几个 可以是用FileInfo中的Length属性 获取读取文件中的数据长度
// 2. 将读到的数据放到暂存区 不确定能读取到几个 可以是用FileInfo中的Length属性 获取读取文件中的数据长度
byte[] bytes1 = new byte[fi.Length];
//Read 读数据 并返回读到的数据个数
int a = streamRead.Read(bytes1, 0, bytes1.Length);
Console.WriteLine(a);
foreach (var item in bytes1)
{
Console.WriteLine(item);
}
3.关闭流
// 关闭流
streamRead.Close();
创建目录
//CreateDirectory 创建目录 及其子目录
Directory.CreateDirectory("D:\work\7.30 拆箱装箱 Equals与== 文件读取IO xml文件 事件Event\3. 文件读取IO\\123");
下面创建了文件读写数据的自定义方法
读数据方法:
public static void Read(string path)
{
//创建一个 StreamReader 对象来进行数据的读取
//从字节流中读取字符
using (StreamReader sr = new StreamReader(path))
{
string str = sr.ReadToEnd();
string[] strarr = str.Split('\n');
for (int i = 0; i < strarr.Length; i++)
{
if (strarr[i].Contains("张三")) // 张三什么什么三
{
Console.WriteLine("存在");
}
else
{
Console.WriteLine("不存在");
}
}
}
}
写数据方法:
public static void Write(string path)
{
//创建一个 StreamWriter 对象来进行数据的编写与保存
//参数: 路径 覆盖还是追加数据 编码格式
//List<string> list = new List<string>() { "张三","李四","王五","小明","小红"};
//从字节流中写入字符
using (StreamWriter sw = new StreamWriter(path, true))
{
//// 写入数据 数据不换行
//sw.Write("张三今天打游戏了");
//sw.Write("李四今天游泳了");
////写入数据 数据会换行
//sw.WriteLine("王五进行吃饭了");
//sw.WriteLine(123456);
sw.WriteLine("测试测试测试");
Console.WriteLine("写入成功");
//sw.WriteLine(list);
}
}
Main函数调用:
static void Main(string[] args)
{
//写数据 StreamWriter
//获取保存数据的路径
string path = Directory.GetCurrentDirectory()+"\\Data\\数据.txt";//Data文件夹已自己创建,没有创建的话要使用创建文件夹的方法
//写数据
Write(path);
Read(path);
}
更多推荐
所有评论(0)