C#

C#文件操作全攻略
  • 楼主 admin
  • 6502025-3-24 08:48:18
1. 文件存在性检查与创建


  1. /// <summary>
  2. /// 安全文件创建器(自动处理目录缺失)
  3. /// </summary>
  4. public static void SafeFileCreate(string path)
  5. {
  6.     if (!File.Exists(path))
  7.     {
  8.         var directory = Path.GetDirectoryName(path);
  9.         // 自动创建缺失目录[3,5](@ref)
  10.         if (!Directory.Exists(directory))
  11.         {
  12.             Directory.CreateDirectory(directory);
  13.         }
  14.         File.Create(path).Dispose(); // 立即释放文件句柄
  15.     }
  16. }
复制代码
2. 原子化文件写入


  1. /// <summary>
  2. /// 安全写入文本文件(防写入中断)
  3. /// </summary>
  4. public static void AtomicWrite(string path, string content)
  5. {
  6.     string tempFile = Path.GetTempFileName();
  7.     try
  8.     {
  9.         // 先写入临时文件[2](@ref)
  10.         File.WriteAllText(tempFile, content, Encoding.UTF8);
  11.         // 原子替换目标文件[5](@ref)
  12.         File.Replace(tempFile, path, null);
  13.     }
  14.     finally
  15.     {
  16.         if (File.Exists(tempFile))
  17.             File.Delete(tempFile);
  18.     }
  19. }
复制代码
3. 实时文件监控


  1. /// <summary>
  2. /// 智能文件变更监听服务
  3. /// </summary>
  4. public class FileWatcher
  5. {
  6.     private FileSystemWatcher _watcher;

  7.     public void Start(string path, string filter = "*.*")
  8.     {
  9.         _watcher = new FileSystemWatcher
  10.         {
  11.             Path = path,
  12.             Filter = filter,
  13.             NotifyFilter = NotifyFilters.LastWrite | NotifyFilters.FileName,
  14.             EnableRaisingEvents = true
  15.         };

  16.         // 防事件重复触发[3](@ref)
  17.         _watcher.Changed += (s, e) => OnChangedDelayed(e);
  18.         _watcher.Created += (s, e) => OnCreatedDelayed(e);
  19.     }

  20.     private async void OnChangedDelayed(FileSystemEventArgs e)
  21.     {
  22.         await Task.Delay(500); // 等待文件释放
  23.         Console.WriteLine($"文件变更:{e.Name}");
  24.     }
  25. }
复制代码


倒序浏览 看全部 全部回复
暂无回复,快来抢沙发
回复