在C#文件操作中,文件的隱藏屬性、只讀屬性以及文件占用狀態都是非常重要的概念,它們直接影響程序對文件的操作能力和可靠性。1. 文件隱藏屬性(Hidden)
重要性:
2. 文件只讀屬性(ReadOnly)
重要性:
防止重要文件被意外修改
某些系統文件需要保持只讀狀態以保證系統穩定性
程序需要正確處理只讀文件,避免操作失敗
3. 文件占用狀態
重要性:
文件被占用時嘗試操作會導致異常
需要正確處理文件占用情況,提高程序健壯性
多線程/多進程環境下尤為重要
4、在程序中注意事項
(1)操作前檢查屬性:在修改或刪除文件前檢查只讀和隱藏屬性
(2)異常處理:對文件操作進行適當的try-catch處理
(3)用戶提示:當遇到只讀或占用文件時,給用戶明確的提示
(4)權限考慮:某些操作可能需要管理員權限
(5)資源釋放:確保及時釋放文件句柄,避免造成文件占用
以下為文件只讀、隱藏、占用判斷方法:
1、判斷文件是否被占用
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、獲取指定目錄中所有隱藏的文件
public List<string> GetHideFile(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、獲取指定目錄中所有的只讀文件
public List<string> GetReadOnly(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、創建隱藏文件夾
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、設置文件夾隱藏
public void SetDireHidden(string path)
{
DirectoryInfo dir = new DirectoryInfo(path);
File.SetAttributes(path, dir.Attributes | FileAttributes.Hidden & ~FileAttributes.ReadOnly);
}
6、取消文件夾的隱藏只讀屬性
public void roHidDirNudo(string path)
{
DirectoryInfo di = new DirectoryInfo(path);
if (di.Exists) { File.SetAttributes(path, di.Attributes & ~FileAttributes.ReadOnly & ~FileAttributes.Hidden); }
}
7、設置文件只讀+隱藏
public void SetFileHiddenReadOnly(string path)
{
FileInfo fi = new FileInfo(path);
File.SetAttributes(path, fi.Attributes | FileAttributes.Hidden | FileAttributes.ReadOnly);
}
8、設置文件只讀
public void SetFileReadOnly(string path)
{
FileInfo fi = new FileInfo(path);
File.SetAttributes(path, fi.Attributes | ~FileAttributes.Hidden | FileAttributes.ReadOnly);
}
9、設置文件隱藏
public void SetFileHidden(string path)
{
FileInfo fi = new FileInfo(path);
File.SetAttributes(path, fi.Attributes | FileAttributes.Hidden | ~FileAttributes.ReadOnly);
}
10、取消文件的只讀、隱藏屬性
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 編輯過