using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Huinaozn.ASleepPC.Tools.Helper
{
static class FileHelper
{
/// <summary>
/// 获取路径所有文件
/// </summary>
public static List<string> GetFiles(string path)
{
try
{
if (!Directory.Exists(path)) //路径不存在
return null;
List<string> result = new List<string>();
DirectoryInfo dir = new DirectoryInfo(path);
DirectoryInfo[] subfolder = dir.GetDirectories();
if (subfolder != null && subfolder.Length > 0)
{
foreach (DirectoryInfo item in subfolder)
{
List<string> subFiles = GetFiles(item.FullName); //FullName:完整路径
if (subFiles != null && subFiles.Count > 0)
result.AddRange(subFiles);
}
}
FileInfo[] files = dir.GetFiles();
if (files != null)
{
foreach (FileInfo file in files)
{
result.Add(file.FullName);
}
}
return result;
}
catch (IOException ioe)
{
throw new Exception(ioe.Message);
}
}
/// <summary>
/// 获取文本文件内容
/// </summary>
public static string GetTxtFileContent(string fileName)
{
try
{
if (!File.Exists(fileName))
{
return null;
}
using (FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read))
{
lock (fs)
{
using (StreamReader reader = new StreamReader(fs, new UTF8Encoding(false)))
{
return reader.ReadToEnd();
}
}
}
}
catch (IOException ioe)
{
throw new Exception(ioe.Message);
}
}
/// <summary>
/// 删除文件
/// </summary>
public static bool DeleteFile(string fileName)
{
try
{
if (!File.Exists(fileName))
{
return false;
}
File.Delete(fileName);
}
catch (IOException ioe)
{
throw new ArgumentNullException(ioe.Message);
}
return true;
}
/// <summary>
/// 覆盖文件
/// </summary>
/// <param name="fileName"></param>
/// <param name="content"></param>
public static void OverwriteFile(string fileName, string content)
{
try
{
Directory.CreateDirectory(Path.GetDirectoryName(fileName));
using (FileStream fs = new FileStream(fileName, FileMode.Create, FileAccess.Write))
{
lock (fs)
{
if (content != null)
{
using (StreamWriter sw = new StreamWriter(fs, new UTF8Encoding(false)))
{
sw.Write(content);
}
}
}
}
}
catch (IOException ioe)
{
throw new Exception(ioe.Message);
}
}
/// <summary>
/// 覆盖文件
/// </summary>
/// <param name="fileName"></param>
/// <param name="content"></param>
public static void OverwriteFile(string fileName, byte[] content)
{
try
{
Directory.CreateDirectory(Path.GetDirectoryName(fileName));
using (FileStream fs = new FileStream(fileName, FileMode.Create, FileAccess.Write))
{
lock (fs)
{
if (content != null)
{
fs.Write(content, 0, content.Length);
}
}
}
}
catch (IOException ioe)
{
throw new Exception(ioe.Message);
}
}
/// <summary>
/// 根据文件名返回临时文件夹中唯一命名的文件的完整路径
/// 形如:公司文档(1).doc,公司文档(2).doc
/// </summary>
public static string GetTempPathFileName(string fileName)
{
// 系统临时文件夹
string tempPath = Path.GetTempPath();
// 文件的完成路径
fileName = tempPath + Path.GetFileName(fileName);
// 文件名
string fileNameWithoutExt =
Path.GetFileNameWithoutExtension(fileName);
// 扩展名
string fileExt = Path.GetExtension(fileName);
int i = 0;
while (File.Exists(fileName))
{
// 生成类似这样的文件名:公司文档(1).doc,公司文档(2).doc
fileName = tempPath + fileNameWithoutExt +
string.Format("({0})", ++i) + fileExt;
}
return fileName;
}
}
}