C#和Unity文件操作中常用的枚举
目录
1.System.IO.FileMode(文件打开/创建模式)
2.System.IO.FileAccess(文件访问权限)
4.System.IO.SearchOption(文件搜索选项)
5.System.IO.FileAttributes(文件属性)
本篇文章分享一下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。
好了,本次的分享到这里就结束啦,希望对你有所帮助~
更多推荐

所有评论(0)