C# 文件输入输出 精简理解

目录

[常用 4 个工具](#常用 4 个工具)

[一、File 静态类(常用)](#一、File 静态类(常用))

[二、文本文件专业读写:StreamReader / StreamWriter](#二、文本文件专业读写:StreamReader / StreamWriter)

三、FileStream(读写字节)

[四、文件夹操作 Directory](#四、文件夹操作 Directory)

[五、3 个枚举(必须懂)](#五、3 个枚举(必须懂))

[1. FileMode(怎么打开文件)](#1. FileMode(怎么打开文件))

[2. FileAccess(权限)](#2. FileAccess(权限))

[3. FileShare(共享)](#3. FileShare(共享))

[六、为什么都用 using?](#六、为什么都用 using?)


C# 文件操作都在 System.IO 命名空间

必须引用 using System.IO;

文件操作 = 读 + 写 + 文件 / 文件夹管理

常用 4 个工具

  • File :静态类,一次性读写文件(最简单)
  • StreamReader / StreamWriter :读写文本文件
  • FileStream :读写字节(图片、视频、大文件)
  • Directory :操作文件夹

一、File 静态类(常用)

  1. 读文本
cs 复制代码
string content = File.ReadAllText("a.txt");
  1. 写文本(会覆盖)
cs 复制代码
File.WriteAllText("a.txt", "你好,C#");
  1. 追加文本
cs 复制代码
File.AppendAllText("a.txt", "追加的内容");
  1. 读所有行
cs 复制代码
string[] lines = File.ReadAllLines("a.txt");
  1. 复制、删除、移动
cs 复制代码
File.Copy("a.txt", "b.txt");
File.Delete("test.txt");
File.Move("a.txt", "new/a.txt");

二、文本文件专业读写:StreamReader / StreamWriter

适合大文件、逐行读写

cs 复制代码
using (StreamReader sr = new StreamReader("a.txt"))
{
    string line;
    while ((line = sr.ReadLine()) != null)
    {
        Console.WriteLine(line);
    }
}
cs 复制代码
using (StreamWriter sw = new StreamWriter("a.txt"))
{
    sw.WriteLine("第一行");
    sw.WriteLine("第二行");
}

三、FileStream(读写字节)

用于图片、视频、二进制文件。

cs 复制代码
using (FileStream fs = new FileStream("a.dat", FileMode.OpenOrCreate))
{
    // 写字节
    byte[] data = new byte[] { 10, 20, 30 };
    fs.Write(data, 0, data.Length);
}

四、文件夹操作 Directory

cs 复制代码
// 创建文件夹
Directory.CreateDirectory("myfolder");

// 判断是否存在
bool exists = Directory.Exists("myfolder");

// 获取文件夹下所有文件
string[] files = Directory.GetFiles("myfolder");

五、3 个枚举(必须懂)

1. FileMode(怎么打开文件)

  • Open:打开(不存在报错)
  • Create:创建(存在覆盖)
  • OpenOrCreate:不存在就创建
  • Append:追加到末尾

2. FileAccess(权限)

  • Read
  • Write
  • ReadWrite

3. FileShare(共享)

一般用 NoneRead

六、为什么都用 using?

因为文件是系统资源 ,using 会自动关闭文件,不占内存、不报错。

cs 复制代码
using (var fs = new FileStream(...))
{
    // 自动释放
}

C# 文件 IO 实操练习题 5道https://blog.csdn.net/m0_71071209/article/details/161318394?spm=1001.2014.3001.5502

相关推荐
matlab代码15 分钟前
基于matlab肤色人脸标记检测系统 GUI界面【源码53期】
开发语言·matlab·人脸标记
KhalilRuan25 分钟前
UnityCsReference——笔记
java·开发语言·笔记
电子云与长程纠缠28 分钟前
UE5 Lyra PocketWorld进行3D内容UI预览 - 上
开发语言·学习·3d·ue5·游戏引擎
码农大叔的博客38 分钟前
golang示例:for九九乘法表
开发语言·算法·golang
长谷深风1111 小时前
Agent 何时该 Replan:五个关键判断
java·大数据·开发语言·ai agent·ai智能体·agent设计·clarify机制
lingran__1 小时前
C++ STL unordered系列(哈希) 底层剖析与模拟实现万字详解 | 基于哈希表,复刻 SGI-STL 泛型哈希容器架构
开发语言·c++·后端·哈希算法·哈希表·泛型编程·unordered系列
萧瑟余晖2 小时前
Java深入解析篇三十四之分布式事务
java·开发语言·分布式
CAE虚拟与现实2 小时前
源码注解 /class 注解 / 运行时注解三者生命周期
java·开发语言
有脚就行2 小时前
第24篇-Go-gRPC推理服务-高性能跨语言通信
开发语言·人工智能·后端·golang
码匠许师傅2 小时前
【C++ 面试真题】聊聊 C++ 的关联容器
开发语言·c++·面试