using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
namespace Common.Files
{
public class FileOperator
{
///
///
///
/// 文件路径
/// 编码
/// 文件内容
public string ReadFile(string path, System.Text.Encoding encoding)
{
string tempContent = "";
using (StreamReader sr = new StreamReader(path, encoding))
{
tempContent = sr.ReadToEnd();
}
return tempContent;
}
///
///
///
/// 文件的路径
/// 是否追加
/// 编码
/// 内容
/// 是否成功
public bool WriteFile(string path, bool append, System.Text.Encoding encoding, string content)
{
bool state = false;
try
{
using (StreamWriter sw = new StreamWriter(path, append, encoding))
{
sw.Write(content);
sw.Flush();
state = true;
}
}
catch
{
}
return state;
}
///
/// 拷贝一个路径下的文件夹和文件
///
///
///
///
public bool CopyDirectoryAndFiles(string olddirectory, string newdirectory)
{
bool state = false;
try
{
DirectoryInfo dis = new DirectoryInfo(newdirectory);
if (!dis.Exists)
{
Directory.CreateDirectory(newdirectory);
}
CopyAll(olddirectory, newdirectory, "");
state = true;
}
catch
{
}
return state;
}
///
/// 递归拷贝一个文件夹的所有文件
///
///
///
///
protected void CopyAll(string olddirectory, string newdirectory, string dir)
{
DirectoryInfo dis = new DirectoryInfo(dir.Length > 0 ? (dir) : (olddirectory));
FileInfo[] files = dis.GetFiles();
foreach (FileInfo fi in files)
{
try
{
//拷贝文件
File.Copy(fi.FullName, string.Format("{0}\\{1}", dir.Length > 0 ? (dir.Replace(olddirectory, newdirectory)) : (newdirectory), fi.Name),true);
}
catch
{
try
{
File.Delete(string.Format("{0}\\{1}", dir.Length > 0 ? (dir.Replace(olddirectory, newdirectory)) : (newdirectory), fi.Name));
//string temp = ex.Message;
File.Copy(fi.FullName, string.Format("{0}\\{1}", dir.Length > 0 ? (dir.Replace(olddirectory, newdirectory)) : (newdirectory), fi.Name));
}
catch
{
}
}
}
if (dis.GetDirectories().Length > 0)
{
for (int i = 0; i < dis.GetDirectories().Length; i++)
{
//创建目录
string tempNewPath = string.Format("{0}\\{1}", dir.Length > 0 ? (dir.Replace(olddirectory, newdirectory)) : (newdirectory), dis.GetDirectories()[i].Name);
if (!Directory.Exists(tempNewPath))
Directory.CreateDirectory(tempNewPath);
CopyAll(olddirectory, newdirectory, dis.GetDirectories()[i].FullName);
}
}
}
///
///
///
///
///
///
public bool CopyFile(string oldFilePath, string newFilePath)
{
bool state = false;
File.Copy(oldFilePath, newFilePath);
return state;
}
///
///
///
///
///
public bool DelteDirectory(string directory)
{
bool state = false;
DeleteDirectoryAndFiles(directory);
return state;
}
///
///
///
///
protected void DeleteDirectoryAndFiles(string path)
{
DirectoryInfo di = new DirectoryInfo(path);
if (di.GetFiles().Length > 0)
DeleteFiles(path);
DirectoryInfo[] dis = di.GetDirectories();
if (dis.Length > 0)
{
foreach (DirectoryInfo tempdi in dis)
{
DeleteDirectoryAndFiles(tempdi.FullName);
if (tempdi.GetFiles().Length < 1 && tempdi.GetDirectories().Length < 1)
tempdi.Delete();
}
}
}
///
/// 删除文件夹的所有文件
///
///
protected void DeleteFiles(string path)
{
DirectoryInfo di = new DirectoryInfo(path);
FileInfo[] fis = di.GetFiles();
foreach (FileInfo fi in fis)
{
try
{
fi.Delete();
}
catch
{
continue;
}
}
}
}
}