using System.IO; namespace AxCopilot.Services; /// /// 앱 내부 임시 파일 관리. /// %APPDATA%\AxCopilot\temp\ 에 임시 파일을 생성하고, /// 1일 이상 지난 파일을 자동으로 정리합니다. /// public static class TempFileService { private static readonly string TempDir = Path.Combine( Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "AxCopilot", "temp"); /// /// 임시 파일 경로를 생성하고 반환합니다. /// 호출 시 1일 이상 지난 기존 임시 파일을 자동 정리합니다. /// /// 파일명 접두사 (예: "clip_image") /// 확장자 (예: ".png", ".txt") public static string CreateTempFile(string prefix, string extension) { Directory.CreateDirectory(TempDir); CleanupOldFiles(); var fileName = $"{prefix}_{DateTime.Now:yyyyMMdd_HHmmss_fff}{extension}"; return Path.Combine(TempDir, fileName); } /// 1일 이상 지난 임시 파일을 삭제합니다. 열려 있는 파일은 건너뜁니다. private static void CleanupOldFiles() { try { if (!Directory.Exists(TempDir)) return; var cutoff = DateTime.Now.AddDays(-1); foreach (var file in Directory.EnumerateFiles(TempDir)) { try { if (File.GetCreationTime(file) < cutoff) File.Delete(file); } catch (IOException) { // 파일이 열려 있음 — 건너뛰기 } catch (UnauthorizedAccessException) { // 권한 없음 — 건너뛰기 } } } catch (Exception ex) { LogService.Debug($"임시 파일 정리 중 오류: {ex.Message}"); } } }