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


}

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐