using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Reflection;
namespace WWPipeLine.Commons
{
public class Paths
{
private static string ApplicationExePath
{
get
{
string codeBase = Assembly.GetExecutingAssembly().Location;
UriBuilder uri = new UriBuilder(codeBase);
string path = Uri.UnescapeDataString(uri.Path);
return Path.GetDirectoryName(path);
}
}
public static string ApplicationPath
{
get
{
FileInfo f = new FileInfo(ApplicationExePath);
return f.Directory.FullName;
}
}
public static string ApplicationConfigDir
{
get
{
FileInfo f = new FileInfo(ApplicationPath);
return f.FullName + "\\configs";
//return f.FullName + "/configs";
}
}
public static string ApplicationPictureDir
{
get
{
FileInfo f = new FileInfo(ApplicationPath);
return f.FullName + "\\pictures";
//return f.FullName + "/configs";
}
}
public static string ApplicationResourcesDir
{
get
{
FileInfo f = new FileInfo(ApplicationPath);
return f.FullName + "\\resources";
}
}
public static string ApplicationLogDir
{
get
{
FileInfo f = new FileInfo(ApplicationPath);
return f.FullName + "\\logs";
}
}
///
/// 临时文件路径
///
public static string ApplicationTempResources
{
get
{
FileInfo f = new FileInfo(ApplicationPath);
string path = f.FullName + "\\temp";
if (!System.IO.Directory.Exists(path))
{
Directory.CreateDirectory(path);
}
return path;
}
}
///
/// APPLow
///
public static string AppLocalLowPath
{
get
{
return Path.Combine(Path.GetDirectoryName(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)), "LocalLow");
}
}
///
/// 系统帮助文档路径
///
public static string ApplicationHelpDocument
{
get
{
FileInfo f = new FileInfo(ApplicationPath);
return f.FullName + "\\document\\Help.pdf";
}
}
internal class FileTimeInfo
{
public string FileName; //文件名
public DateTime FileCreateTime; //创建时间
public FileInfo FileInfo;
}
///
/// 获取目录下指定后缀的文件
///
///
///
///
public static List FilesInDir(string dir, string ext)
{
List list = new List();
DirectoryInfo d = new DirectoryInfo(dir);
foreach (FileInfo fi in d.GetFiles())
{
if (string.IsNullOrEmpty(ext) || fi.Extension.ToUpper() == ext.ToUpper())
{
list.Add(fi);
}
}
return list;
}
///
/// 获取某个路径下的最新文件
///
///
///
///
public static FileInfo FileInDirLastCreated(string dir, string ext, string extAnother = null)
{
if (!Directory.Exists(dir))
{
throw new FileNotFoundException(dir + " 未找到");
}
FileTimeInfo fi = GetLatestFileTimeInfo(dir, ext, extAnother);
return new FileInfo(fi.FileName);
}
//获取最近创建的文件名和创建时间
//如果没有指定类型的文件,返回null
static FileTimeInfo GetLatestFileTimeInfo(string dir, string ext, string extAnother = null)
{
List list = new List();
DirectoryInfo d = new DirectoryInfo(dir);
foreach (FileInfo fi in d.GetFiles())
{
if (string.IsNullOrEmpty(ext) || fi.Extension.ToUpper() == ext.ToUpper())
{
list.Add(new FileTimeInfo()
{
FileName = fi.FullName,
FileCreateTime = fi.CreationTime,
FileInfo = fi
});
}
}
if (list.Count == 0)
{
foreach (FileInfo fi in d.GetFiles())
{
if (string.IsNullOrEmpty(extAnother) || fi.Extension.ToUpper() == extAnother.ToUpper())
{
list.Add(new FileTimeInfo()
{
FileName = fi.FullName,
FileCreateTime = fi.CreationTime,
FileInfo = fi
});
}
}
}
var qry = from x in list
orderby x.FileCreateTime
select x;
return qry.LastOrDefault();
}
public static void ClearFolder(string dir)
{
foreach (string d in Directory.GetFileSystemEntries(dir))
{
if (System.IO.File.Exists(d))
{
FileInfo fi = new FileInfo(d);
if (fi.Attributes.ToString().IndexOf("ReadOnly") != -1)
fi.Attributes = FileAttributes.Normal;
System.IO.File.Delete(d);//直接删除其中的文件
}
else
{
DirectoryInfo d1 = new DirectoryInfo(d);
if (d1.GetFiles().Length != 0)
{
ClearFolder(d1.FullName);////递归删除子文件夹
}
Directory.Delete(d);
}
}
}
}
}