LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

C# 文件的隐藏、只读、占用判断介绍

admin
2025年7月14日 22:27 本文热度 73

       在C#文件操作中,文件的隐藏属性、只读属性以及文件占用状态都是非常重要的概念,它们直接影响程序对文件的操作能力和可靠性。

1. 文件隐藏属性(Hidden)

重要性:

  • 系统文件或配置文件通常被标记为隐藏,防止用户误操作

  • 程序可能需要访问这些隐藏文件来完成特定功能

  • 用户界面程序可能需要考虑是否显示隐藏文件

2. 文件只读属性(ReadOnly)

重要性:

  • 防止重要文件被意外修改

  • 某些系统文件需要保持只读状态以保证系统稳定性

  • 程序需要正确处理只读文件,避免操作失败

3. 文件占用状态

重要性:

  • 文件被占用时尝试操作会导致异常

  • 需要正确处理文件占用情况,提高程序健壮性

  • 多线程/多进程环境下尤为重要

4、在程序中注意事项

(1)操作前检查属性:在修改或删除文件前检查只读和隐藏属性

(2)异常处理:对文件操作进行适当的try-catch处理

(3)用户提示:当遇到只读或占用文件时,给用户明确的提示

(4)权限考虑:某些操作可能需要管理员权限

(5)资源释放:确保及时释放文件句柄,避免造成文件占用

以下为文件只读、隐藏、占用判断方法:

1、判断文件是否被占用

/// <summary>/// 判断文件是否被占用/// 如果文件已经被其它程序使用,则打开失败。/// </summary>/// <param name="filePath">文件路径</param>/// <returns>true:被占用</returns>public bool IsFileInUse(string filePath){    bool inUse = false;    if (!File.Exists(filePath)) return false;    try    {        using (FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.ReadWrite, FileShare.None))        {            inUse = false;            fs.Close();        }    }    catch    {        inUse = true;    }    return inUse;}

2、获取指定目录中所有隐藏的文件

/// <summary>/// 获取指定目录中所有隐藏的文件/// </summary>/// <param name="FileDir"></param>/// <returns></returns>public List<stringGetHideFile(string FileDir){    List<string> RetList = new List<string>();    string[] haidfile = Directory.GetFiles(FileDir, "*.*", SearchOption.AllDirectories);    foreach (string file in haidfile)    {        FileInfo fi = new FileInfo(file);        if ((fi.Attributes & FileAttributes.Hidden) == FileAttributes.Hidden)        {            RetList.Add(fi.FullName);        }    }    return RetList;}

3、获取指定目录中所有的只读文件

/// <summary>/// 获取指定目录中所有的只读文件/// </summary>/// <param name="FileDir"></param>/// <returns></returns>public List<stringGetReadOnly(string FileDir){    List<string> RetList = new List<string>();    string[] haidfile = Directory.GetFiles(FileDir, "*.*", SearchOption.AllDirectories);    foreach (string file in haidfile)    {        FileInfo fi = new FileInfo(file);        if ((fi.Attributes & FileAttributes.ReadOnly) == FileAttributes.ReadOnly)        {            RetList.Add(fi.FullName);        }    }    return RetList;}

4、创建隐藏文件夹

/// <summary>/// 创建隐藏文件夹/// </summary>/// <param name="path">文件路径</param>public void CreateHiddenDires(string path){    DirectoryInfo di = new DirectoryInfo(path);    DateTime times = DateTime.Now;    if (!di.Exists)    {        di.Create();        di.LastWriteTime = times;        di.LastAccessTime = times;        SetDireHidden(path);    }}

5、设置文件夹隐藏

/// <summary>/// 设置文件夹隐藏/// </summary>/// <param name="path">文件路径</param>public void SetDireHidden(string path){    DirectoryInfo dir = new DirectoryInfo(path);    File.SetAttributes(path, dir.Attributes | FileAttributes.Hidden & ~FileAttributes.ReadOnly);}

6、取消文件夹的隐藏只读属性

/// <summary> 取消文件夹的隐藏只读属性 </summary>/// <param name="path">文件名(包含路径)</param>public void roHidDirNudo(string path){    DirectoryInfo di = new DirectoryInfo(path);    if (di.Exists) { File.SetAttributes(path, di.Attributes & ~FileAttributes.ReadOnly & ~FileAttributes.Hidden); }}

7、设置文件只读+隐藏

/// <summary> /// 设置文件只读+隐藏/// </summary>/// <param name="path">文件名(包含路径)</param>public void SetFileHiddenReadOnly(string path){    FileInfo fi = new FileInfo(path);    File.SetAttributes(path, fi.Attributes | FileAttributes.Hidden | FileAttributes.ReadOnly);}

8、设置文件只读

/// <summary> /// 设置文件只读/// </summary>/// <param name="path">文件名(包含路径)</param>public void SetFileReadOnly(string path){    FileInfo fi = new FileInfo(path);    File.SetAttributes(path, fi.Attributes | ~FileAttributes.Hidden | FileAttributes.ReadOnly);}

9、设置文件隐藏

/// <summary> /// 设置文件隐藏/// </summary>/// <param name="path">文件名(包含路径)</param>public void SetFileHidden(string path){    FileInfo fi = new FileInfo(path);    File.SetAttributes(path, fi.Attributes | FileAttributes.Hidden | ~FileAttributes.ReadOnly);}

10、取消文件的只读、隐藏属性

/// <summary> 取消文件的只读、隐藏属性 </summary>/// <param name="path">文件名(包含路径)</param>public void CancelFileHiddenReadOnly(string path){    FileInfo fi = new FileInfo(path);    if (fi.Exists)    {        File.SetAttributes(path, fi.Attributes & ~FileAttributes.Hidden & ~FileAttributes.ReadOnly);    }}

阅读原文:原文链接


该文章在 2025/7/15 10:46:55 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2025 ClickSun All Rights Reserved