目录

C#和Unity文件操作中常用的枚举

1.System.IO.FileMode(文件打开/创建模式)

2.System.IO.FileAccess(文件访问权限)

3.System.IO.FileShare(文件共享权限)

4.System.IO.SearchOption(文件搜索选项)

5.System.IO.FileAttributes(文件属性)

6.Unity中的特殊路径枚举

7.总结


       本篇文章分享一下C#和Unity文件操作中常用的枚举。文件操作涉及多个常用枚举,它们用于控制文件的访问方式、打开模式、共享权限等核心行为。

C#和Unity文件操作中常用的枚举

1.System.IO.FileMode(文件打开/创建模式)

       作用:指定打开或创建文件时的行为,决定如何处理已存在的文件或新文件

枚举值

含义描述

适用场景

CreateNew

创建全新文件。若文件已存在则抛出IOException,不存在则创建并打开。

生成唯一文件(如编号日志、临时文件),确保不会覆盖已有文件。

Create

创建或覆盖文件。若文件存在则清空内容,不存在则新建。

保存新数据(如游戏存档覆盖旧存档),需要“干净”的文件内容。

Open

打开现有文件。若文件不存在则抛出FileNotFoundException

读取已知存在的文件(如配置文件),确保文件必须存在。

OpenOrCreate

打开现有文件或创建新文件。存在则保留内容,不存在则新建。

“有则使用,无则新建”的场景(如首次使用时创建配置文件,后续直接打开)。

Truncate

打开现有文件并清空内容(文件长度变为0)。若文件不存在则抛出异常。

重置文件内容但保留文件本身(如清空日志文件但维持文件路径)。

Append

打开文件并将指针移至末尾(仅允许写入)。若文件不存在则创建。

日志记录、累计数据(如每日统计追加到总表),确保新内容添加到末尾。

//覆盖模式打开文件(适合保存新数据)
using (FileStream fs = new FileStream("data.txt", FileMode.Create, FileAccess.Write)) {...}

       想要了解using的使用可查看【超详细】using语句

2.System.IO.FileAccess(文件访问权限)

       作用:指定对文件的操作权限(读、写或读写),限制程序的操作范围

枚举值

含义描述

适用场景

Read

仅允许读取文件,禁止写入操作。

打开配置文件、日志文件等仅需读取的场景,避免误写。

Write

仅允许写入文件,禁止读取操作。

打开日志文件仅用于追加内容、创建新文件,限制读取以确保数据写入安全。

ReadWrite

允许同时读取和写入文件)。

需要先读再写的场景(如更新存档:读取旧数据→修改→写入新数据)。

//只读模式打开配置文件(防止误写)
using (FileStream fs = new FileStream("config.ini", FileMode.Open, FileAccess.Read)) {...}

3.System.IO.FileShare(文件共享权限)

       作用:指定其他进程或线程对同一文件的访问权限(是否允许共享读写)

枚举值

含义描述

适用场景

None

禁止其他进程或线程访问该文件(独占模式)。

敏感文件(如加密存档),确保操作期间无其他程序干扰。

Read

允许其他进程读取该文件,但禁止写入。

日志文件(当前程序写入,其他程序可同时查看)。

Write

允许其他进程写入该文件(可能导致数据冲突,慎用)。

多程序协作写入同一文件(需额外同步逻辑,如日志聚合服务)。

ReadWrite

允许其他进程同时读写该文件(需严格同步,否则可能数据损坏)。

多进程实时共享数据(如多人编辑同一文档的临时文件)。

Delete

允许其他进程删除该文件。

临时文件(当前程序使用中,但允许其他程序清理过期文件)。

//当前程序只能往日志末尾添加内容,允许其他进程同时读取,但禁止写入(适合日志文件)
using (var fs = new FileStream("log.txt", FileMode.Append, FileAccess.Write, FileShare.Read)) {...}

4.System.IO.SearchOption(文件搜索选项)

       作用:在搜索文件或目录时,指定是否包含子目录

枚举值

含义描述

适用场景

TopDirectoryOnly

仅搜索当前目录,不包含子目录。

查找当前文件夹下的文件(如根目录下的配置文件)。

AllDirectories

搜索当前目录及所有子目录(递归搜索)。

批量查找所有子文件夹中的目标文件(如项目中所有.cs脚本)。

//搜索所有子目录中的.txt文件
string[] allTxtFiles = Directory.GetFiles("data", "*.txt", SearchOption.AllDirectories);

5.System.IO.FileAttributes(文件属性)

       作用:指定文件或目录的属性(如只读、隐藏、系统文件等)

枚举值

含义描述

适用场景

Normal

默认属性(无特殊属性)。

普通可读写文件(如用户生成的文档)。

ReadOnly

文件为只读(无法修改或删除,需取消只读属性后才能操作)。

保护重要文件(如系统配置、程序依赖的核心数据)。

Hidden

文件为隐藏(默认不显示在文件管理器中,需开启“显示隐藏文件”才能看到)。

隐藏临时文件、缓存文件或敏感数据(如用户凭证)。

Directory

标识该路径为目录(非文件)。

区分路径是文件夹还是文件(如Directory.GetAttributes(path)判断类型)。

Archive

文件已修改且未备份(通常用于备份工具识别需要备份的文件)。

待备份文件(如编辑后未备份的文档)。

//设置文件为只读
File.SetAttributes("protect.txt", FileAttributes.ReadOnly);

//检查文件是否为隐藏
bool isHidden = (File.GetAttributes("secret.txt") & FileAttributes.Hidden) != 0;

6.Unity中的特殊路径枚举

       Unity没有专门的文件枚举,但提供了几个常用的路径属性,用于跨平台文件操作:

Application.persistentDataPath:可读写的持久化目录(推荐用于保存存档、配置)。

Application.streamingAssetsPath:只读资源目录(适合存放初始配置、素材)。

Application.temporaryCachePath:临时缓存目录(可用于存放临时文件)。

       想要进一步了解可查看Unity的常用路径和特殊文件夹

7.总结

       这些枚举是文件操作的“控制开关”:

FileMode(打开/创建模式)和FileAccess(读写权限)是文件流操作的必选参数,决定了文件操作的核心行为

FileShare用于多进程/线程共享文件时控制权限,避免冲突

SearchOption简化目录搜索逻辑

FileAttributes用于文件属性管理

       注意:不同枚举的组合可能产生不同效果,需根据具体场景进行选择。如FileMode.Append通常搭配FileAccess.Write。

       好了,本次的分享到这里就结束啦,希望对你有所帮助~

Logo

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

更多推荐