using ComPDFKit.PDFDocument;
using PDF_Master.Properties;
using Prism.Mvvm;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace PDF_Master.Helper
{
///
/// 用于创建、获取、删除缓存文件的辅助类
/// 功能模块需要创建缓存文件夹时,统一在此类里处理
/// 临时文件在app启动时进行删除
///
public class CacheFilePath : BindableBase
{
private static CacheFilePath instance = new CacheFilePath();
///
/// 图章缓存文件夹路径
///
List CustomStamp = new List { "CustomStamp" };
List SignatureFreeHand = new List { "Signature", "FreeHand" };
List SignatureStamp = new List { "Signature", "Stamp" };
List MergeFile = new List { "Temp" };
///
/// Document路径下的新手引导文档
///
List GuidPDF = new List() { "GuidPDF" };
///
/// 扫描仪缓存文件夹路径
///
List ScanFile = new List { "ScanTemp" };
private List CreatedFile = new List() { "CreatedFile"};
///
/// 扫描仪缓存文件夹路径
///
List ADFile = new List { "ADTemp" };
private CPDFDocument copyDoc;
///
/// 页面编辑复制粘贴的临时缓存文件
///
public CPDFDocument CopyDoc
{
get { return copyDoc; }
set
{
SetProperty(ref copyDoc, value);
}
}
public static CacheFilePath Instance => instance;
private CacheFilePath()
{
}
~CacheFilePath()
{
if (CopyDoc != null)
{
CopyDoc.Release();
}
}
///
/// 自定图章缓存文件夹
///
public string CustomStampPath
{
get
{
return CreateCacheDirectory(CustomStamp);
}
}
///
/// 签名图章缓存文件夹
///
public string SignatureStampPath
{
get
{
return CreateCacheDirectory(SignatureStamp);
}
}
///
/// 签名手绘缓存文件夹
///
public string SignatureFreeHandPath
{
get
{
return CreateCacheDirectory(SignatureFreeHand);
}
}
///
/// 合并文件的缓存文件夹
///
public string MergeFilePath
{
get
{
return CreateCacheDirectory(MergeFile);
}
}
///
/// 扫描仪文件的缓存文件夹
///
public string ScanFilePath
{
get
{
return CreateCacheDirectory(ScanFile);
}
}
///
/// AD文件的缓存文件夹
///
public string ADFilePath
{
get
{
return CreateCacheDirectory(ADFile);
}
}
///
/// 用于保存新建的临时文档
///
public string CreatedFilePath
{
get
{
return CreateCacheDirectory(CreatedFile);
}
}
public string GuidPDFPath
{
get
{
return CreateCacheDirectory(GuidPDF);
}
}
///
/// 在“文档”路径下创建缓存文件夹,传C:\Users\kdan\Documents\PDF Master 以后的文件夹名
///
/// 文件路径列表,首位为第一个文件夹名,以此类推
///
private string CreateCacheDirectory(List directoryName)
{
try
{
string Path = App.CurrentPath;
for (int i = 0; i < directoryName.Count; i++)
{
Path = System.IO.Path.Combine(Path, directoryName[i]);
}
System.IO.DirectoryInfo directoryInfo = System.IO.Directory.CreateDirectory(Path);
if (directoryInfo.Exists
&& (directoryInfo.Attributes & System.IO.FileAttributes.ReadOnly) != System.IO.FileAttributes.ReadOnly
&& (directoryInfo.Attributes & System.IO.FileAttributes.Hidden) != System.IO.FileAttributes.Hidden
)
{
return Path;
}
else
{
return "";
}
}
catch (Exception)
{
return "";
}
}
///
/// 将临时文件添加到待删除列表,app下次启动时删除
///
///
public void AddToDeleteFiles(string file)
{
//添加时不做是否存在判断,考虑可能每个人调用的顺序不一样,在删除时再做判断
try
{
if (!Settings.Default.AppProperties.NeedToDeletePath.Contains(file))
{
Settings.Default.AppProperties.NeedToDeletePath.Add(file);
}
Settings.Default.Save();
//Save后,需要调用reload 防止互相占用文件,引起崩溃,具体效果待验证
Settings.Default.Reload();
}
catch { }
}
public void AddToDeleteFiles(List files)
{
foreach (string file in files)
{
AddToDeleteFiles(file);
}
}
///
/// 启动时删除临时文件
///
public void ClearDeleteFiles()
{
try
{
foreach (string file in Settings.Default.AppProperties.NeedToDeletePath)
{
if (File.Exists(file))
{
File.Delete(file);
}
}
Settings.Default.AppProperties.NeedToDeletePath.Clear();
//清除ScanTemp文件夹及该目录中的所有子内容
string ScanTempPath = Path.Combine(App.CurrentPath, "ScanTemp");
DirectoryInfo Scantempfolder = new DirectoryInfo(ScanTempPath);
if (Scantempfolder.Exists)
{
Directory.Delete(ScanTempPath, true);
}
//清除Temp文件夹及该目录中的所有子内容
string TempPath= Path.Combine(App.CurrentPath, "Temp");
DirectoryInfo tempfolder = new DirectoryInfo(TempPath);
if (tempfolder.Exists)
{
Directory.Delete(TempPath, true);
}
//清除新建文件夹及该目录中的所有子内容
string CreatedFilePath = Path.Combine(App.CurrentPath, CreatedFile[0]);
DirectoryInfo CreatedFilePathFolder = new DirectoryInfo(CreatedFilePath);
if (CreatedFilePathFolder.Exists)
{
Directory.Delete(CreatedFilePath, true);
}
}
catch { }
}
}
}