101 lines
2.9 KiB
C#

using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Text.RegularExpressions;
namespace Volian.Base.Library
{
public static class TmpFile
{
public static string CreateFileName(string procNumber, string sectNumber, string sectTitle)
{
return FixFileName(procNumber + "_" + ((sectNumber ?? "") != "" ? sectNumber : sectTitle));
}
public static string CreateFileName(string procNumber)
{
return FixFileName(procNumber);
}
public static string FixFileName(string name)
{
return Regex.Replace(name, "[ .,/]", "_") + ".pdf";
}
public static void RemoveAllTmps()
{
RemoveTmpPDFs();
RemoveTmpDocs();
RemoveTmps("*.png");
}
public static void RemoveTmpPDFs()
{
string tmpFolder = VlnSettings.TemporaryFolder;
DirectoryInfo di = new DirectoryInfo(tmpFolder);
if (!di.Exists) return;
foreach (FileInfo fi in di.GetFiles("*.pdf"))
{
try
{
// only delete pdfs if they are older than an hour - just to be
// safe. During creation of pdf's, separate pdfs are created for
// word sections and imported into the main resulting pdf.
if (fi.LastAccessTime.Ticks < (DateTime.Now.Ticks - TimeSpan.TicksPerHour))
fi.Delete();
}
catch (Exception ex)
{
continue; // if an error, go onto next file.
}
}
}
public static void RemoveTmpDocs()
{
// B2017-249 Recover Temporary File And AutoSave support for MSWord
// Remove temporary Doc Files more than 2 days old so that files with changes can be recoered.
RemoveOldTmps("*.doc");
RemoveOldTmps("*.docx");
RemoveOldTmps("*.rtf");
}
private static void RemoveOldTmps(string extension)
{
string tmpFolder = VlnSettings.TemporaryFolder;
DirectoryInfo di = new DirectoryInfo(tmpFolder);
if (!di.Exists) return;
foreach (FileInfo fi in di.GetFiles(extension))
{
try
{
// delete any docs. If it fails, just go on to the next one because
// it may be open from another process.
if(fi.LastWriteTimeUtc < DateTime.Now.AddDays(-2.0))
fi.Delete();
}
catch (Exception ex)
{
continue; // if an error, go onto next file.
}
}
}
private static void RemoveTmps(string extension)
{
string tmpFolder = VlnSettings.TemporaryFolder;
DirectoryInfo di = new DirectoryInfo(tmpFolder);
if (!di.Exists) return;
foreach (FileInfo fi in di.GetFiles(extension))
{
try
{
// delete any docs. If it fails, just go on to the next one because
// it may be open from another process.
fi.Delete();
}
catch (Exception ex)
{
continue; // if an error, go onto next file.
}
}
}
}
}