ln.templates/ln.templates.service/TempFileStream.cs

47 lines
1.2 KiB
C#

using System;
using System.IO;
using ln.type;
using Microsoft.Win32.SafeHandles;
namespace ln.templates.service
{
public class TempFileStream : FileStream, IDisposable
{
public static string DefaultPath { get; set; } = Path.GetTempPath();
public new void Dispose()
{
try
{
base.Dispose();
}
finally
{
if (File.Exists(Name))
File.Delete(Name);
}
}
public TempFileStream()
:base($"{GetUniqueFileName(DefaultPath)}", FileMode.Create)
{
}
public TempFileStream(string extension)
:base($"{GetUniqueFileName(extension)}", FileMode.Create)
{
}
public static string GetUniqueFileName(string path) => GetUniqueFileName(path, DefaultPath);
public static string GetUniqueFileName(string path, string extension)
{
return String.Format("{1}/tmp.{2}{0}",
extension,
path,
BitConverter.GetBytes(DateTime.Now.ToUnixTimeMilliseconds()).ToHexString()
);
}
}
}