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