Files
community/Ink Canvas/Helpers/DelAutoSavedFiles.cs
T

67 lines
2.8 KiB
C#
Raw Normal View History

2025-05-25 09:29:48 +08:00
using System;
using System.IO;
2025-08-03 16:46:33 +08:00
namespace Ink_Canvas.Helpers
{
internal class DelAutoSavedFiles
{
public static void DeleteFilesOlder(string directoryPath, int daysThreshold)
{
2025-05-25 09:29:48 +08:00
string[] extensionsToDel = { ".icstk", ".png" };
2025-08-03 16:46:33 +08:00
if (Directory.Exists(directoryPath))
{
2025-05-25 09:29:48 +08:00
// 获取目录中的所有子目录
string[] subDirectories = Directory.GetDirectories(directoryPath, "*", SearchOption.AllDirectories);
2025-08-03 16:46:33 +08:00
foreach (string subDirectory in subDirectories)
{
try
{
2025-05-25 09:29:48 +08:00
// 获取子目录下的所有文件
string[] files = Directory.GetFiles(subDirectory);
2025-08-03 16:46:33 +08:00
foreach (string filePath in files)
{
2025-05-25 09:29:48 +08:00
// 获取文件的创建日期
DateTime creationDate = File.GetCreationTime(filePath);
// 获取文件的扩展名
string fileExtension = Path.GetExtension(filePath);
// 如果文件的创建日期早于指定天数且是要删除的扩展名,则删除文件
2025-08-03 16:46:33 +08:00
if (creationDate < DateTime.Now.AddDays(-daysThreshold))
{
2025-05-25 09:29:48 +08:00
if (Array.Exists(extensionsToDel, ext => ext.Equals(fileExtension, StringComparison.OrdinalIgnoreCase))
2025-08-03 16:46:33 +08:00
|| Path.GetFileName(filePath).Equals("Position", StringComparison.OrdinalIgnoreCase))
{
2025-05-25 09:29:48 +08:00
File.Delete(filePath);
}
}
}
2025-08-03 16:46:33 +08:00
}
catch (Exception ex)
{
2025-07-28 14:40:44 +08:00
LogHelper.WriteLogToFile("DelAutoSavedFiles | 处理文件时出错: " + ex, LogHelper.LogType.Error);
2025-05-25 09:29:48 +08:00
}
}
2025-08-03 16:46:33 +08:00
try
{ // 递归删除空文件夹
2025-05-25 09:29:48 +08:00
DeleteEmptyFolders(directoryPath);
2025-08-03 16:46:33 +08:00
}
catch (Exception ex)
{
2025-07-28 14:40:44 +08:00
LogHelper.WriteLogToFile("DelAutoSavedFiles | 处理文件时出错: " + ex, LogHelper.LogType.Error);
2025-05-25 09:29:48 +08:00
}
}
}
2025-08-03 16:46:33 +08:00
private static void DeleteEmptyFolders(string directoryPath)
{
foreach (string dir in Directory.GetDirectories(directoryPath))
{
2025-05-25 09:29:48 +08:00
DeleteEmptyFolders(dir);
2025-08-03 16:46:33 +08:00
if (Directory.GetFiles(dir).Length == 0 && Directory.GetDirectories(dir).Length == 0)
{
2025-05-25 09:29:48 +08:00
Directory.Delete(dir, false);
}
}
}
}
}