总结的C#关于文件操作的类
直接上代码,粘到项目直接调用即可
using System;
using System.IO;
using System.IO.Compression;
namespace Test.models
{
public static class OperationFile
{
/// <summary>
/// 将指定文件转为byte数组
/// </summary>
/// <param name="filePath">要转换的文件路径</param>
/// <returns></returns>
public static byte[] FileToBytes(string filePath)
{
FileInfo fi = new FileInfo(filePath);
byte[] buff = new byte[fi.Length];
FileStream fs = fi.OpenRead();
fs.Read(buff, 0, Convert.ToInt32(fs.Length));
fs.Close();
return buff;
}
/// <summary>
/// 将byte数组转换为文件并保存到指定路径
/// </summary>
/// <param name="buff">byte数组</param>
/// <param name="savepath">保存路径</param>
public static void BytesToFile(byte[] buff, string savepath)
{
if (File.Exists(Path.GetFullPath(savepath)))
{
File.Delete(Path.GetFullPath(savepath));
}
FileStream fs = new FileStream(savepath, FileMode.CreateNew);
BinaryWriter bw = new BinaryWriter(fs);
bw.Write(buff, 0, buff.Length);
bw.Close();
fs.Close();
}
/// <summary>
/// 将文件压缩到指定路径
/// </summary>
/// <param name="inputFilename">待压缩文件路径</param>
/// <param name="outputFilename">压缩后的压缩包路径</param>
public static void CreateFromDirectoryModel(string inputFilename, string outputFilename)
{
//new DirectoryInfo(outputFilename).Delete(true);
if (File.Exists(Path.GetFullPath(outputFilename)))
{
File.Delete(Path.GetFullPath(outputFilename));
}
ZipFile.CreateFromDirectory(inputFilename, outputFilename);
}
/// <summary>
/// 将压缩包解压到指定路径
/// </summary>
/// <param name="inputFilename">待解压文件路径</param>
/// <param name="outputFilename">解压后文件保存的路径</param>
public static void ExtractToDirectoryModel(string inputFilename, string outputFilename)
{
if (Directory.Exists(outputFilename))
{
new DirectoryInfo(outputFilename).Delete(true);
}
else
{
Directory.CreateDirectory(outputFilename);
}
ZipFile.ExtractToDirectory(inputFilename, outputFilename);
}
/// <summary>
/// 删除指定文件夹及文件夹下所有文件
/// </summary>
/// <param name="srcPath"></param>
public static void DelectDir(string srcPath)
{
try
{
DirectoryInfo dir = new DirectoryInfo(srcPath);
FileSystemInfo[] fileinfo = dir.GetFileSystemInfos(); //返回目录中所有文件和子目录
foreach (FileSystemInfo i in fileinfo)
{
if (i is DirectoryInfo) //判断是否文件夹
{
DirectoryInfo subdir = new DirectoryInfo(i.FullName);
subdir.Delete(true); //删除子目录和文件
}
else
{
File.Delete(i.FullName); //删除指定文件
}
}
}
catch (Exception)
{
throw;
}
}
}
}