文件操作通用类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using Model.CMS;
using System.Web;
using System.Text.RegularExpressions;

namespace Utility.CMSAnalyze
{
/// <summary>
/// 文件操作类
/// </summary>
public class ModelManipulate
{
#region 获取指定文件夹下所有子目录及文件
/// <summary>
/// 获取指定文件夹下所有子目录及文件
/// </summary>
/// <param name="Path">详细路径</param>
public List<ModelSit> GetFoldAll(string Path)
{
List<ModelSit> ms = new List<ModelSit>();
try
{
string ss = judge(Path);
//判断文件夹是否存在
if (Directory.Exists(ss))
{
//文件
DirectoryInfo thisOne = new DirectoryInfo(ss);
//文件夹
DirectoryInfo[] subDirectories = thisOne.GetDirectories();
//获取文件夹下的所有文件夹
foreach (DirectoryInfo fInfo in subDirectories)
{
ModelSit mod = new ModelSit();
mod.Name = fInfo.Name;
mod.Date = fInfo.CreationTimeUtc.ToString("yyyy-MM-dd HH:mm:ss");
mod.Url = fInfo.ToString();
mod.Size = getDirectorySize(fInfo.FullName);
mod.Typt = "目录";
mod.Url = fInfo.FullName;
ms.Add(mod);
}
//获取文件夹下的所有文件
foreach (FileInfo dirinfo in thisOne.GetFiles())
{
//只获取静态文件 其余不获取
if (dirinfo.Extension == ".html" || dirinfo.Extension == ".htm" || dirinfo.Extension == ".shtml" || dirinfo.Extension == ".shtm")
{
ModelSit mod = new ModelSit();
mod.Name = dirinfo.Name;
mod.Date = dirinfo.CreationTimeUtc.ToString("yyyy-MM-dd HH:mm:ss");
mod.Size = Convert.ToInt32(dirinfo.Length / 1024);
mod.Typt = "文件";
mod.Url = dirinfo.DirectoryName + "\\" + dirinfo.Name;
mod.TypeName = dirinfo.Extension;
ms.Add(mod);
}
}
}
}
catch
{
throw;
}
return ms;
}
#endregion

#region 获取指定文件夹下所有子目录及文件
/// <summary>
/// 获取指定文件夹下所有子目录及文件
/// </summary>
/// <param name="Path">详细路径</param>
public List<ModelSit> GetFoldAllCSS(string Path)
{
List<ModelSit> ms = new List<ModelSit>();
try
{
string ss = judge(Path);
//判断文件夹是否存在
if (Directory.Exists(ss))
{
//文件
DirectoryInfo thisOne = new DirectoryInfo(ss);
//文件夹
DirectoryInfo[] subDirectories = thisOne.GetDirectories();
//获取文件夹下的所有文件夹
foreach (DirectoryInfo fInfo in subDirectories)
{
ModelSit mod = new ModelSit();
mod.Name = fInfo.Name;
mod.Date = fInfo.CreationTimeUtc.ToString("yyyy-MM-dd HH:mm:ss");
mod.Url = fInfo.ToString();
mod.Size = getDirectorySize(fInfo.FullName);
mod.Typt = "目录";
mod.Url = fInfo.FullName;
ms.Add(mod);
}
//获取文件夹下的所有文件
foreach (FileInfo dirinfo in thisOne.GetFiles())
{
//只获取静态文件 其余不获取
if (dirinfo.Extension == ".css")
{
ModelSit mod = new ModelSit();
mod.Name = dirinfo.Name;
mod.Date = dirinfo.CreationTimeUtc.ToString("yyyy-MM-dd HH:mm:ss");
mod.Size = Convert.ToInt32(dirinfo.Length / 1024);
mod.Typt = "文件";
mod.Url = dirinfo.DirectoryName + "\\" + dirinfo.Name;
mod.TypeName = dirinfo.Extension;
ms.Add(mod);
}
}
}
}
catch
{
throw;
}
return ms;
}
#endregion

#region 获取指定文件夹下所有子目录及文件
/// <summary>
/// 获取指定文件夹下所有子目录及文件
/// </summary>
/// <param name="Path">详细路径</param>
public List<ModelSit> GetorrdAll(string Path)
{
List<ModelSit> ms = new List<ModelSit>();
try
{
string ss = judge(Path);
//判断文件夹是否存在
if (Directory.Exists(ss))
{
//文件
DirectoryInfo thisOne = new DirectoryInfo(ss);
//文件夹
DirectoryInfo[] subDirectories = thisOne.GetDirectories();
//获取文件夹下的所有文件夹
foreach (DirectoryInfo fInfo in subDirectories)
{
ModelSit mod = new ModelSit();
mod.Name = fInfo.Name;
mod.Date = fInfo.CreationTimeUtc.ToString("yyyy-MM-dd HH:mm:ss");
mod.Url = fInfo.ToString();
mod.Size = getDirectorySize(fInfo.FullName);
mod.Typt = "目录";
mod.Url = fInfo.FullName;
ms.Add(mod);
}
//获取文件夹下的所有文件
foreach (FileInfo dirinfo in thisOne.GetFiles())
{
//只获取静态文件 其余不获取
if (dirinfo.Extension == ".html" || dirinfo.Extension == ".htm" || dirinfo.Extension == ".shtml" || dirinfo.Extension == ".shtm" || dirinfo.Extension == ".css")
{
ModelSit mod = new ModelSit();
mod.Name = dirinfo.Name;
mod.Date = dirinfo.CreationTimeUtc.ToString("yyyy-MM-dd HH:mm:ss");
mod.Size = Convert.ToInt32(dirinfo.Length / 1024);
mod.Typt = "文件";
mod.Url = dirinfo.DirectoryName + "\\" + dirinfo.Name;
mod.TypeName = dirinfo.Extension;
ms.Add(mod);
}
}
}
}
catch
{
throw;
}
return ms;
}
#endregion

#region 递归获取文件夹大小
/// <summary>
/// 递归获取文件夹大小
/// </summary>
/// <param name="path"></param>
/// <returns></returns>
public int getDirectorySize(string path)
{
DirectoryInfo dirInfo = new DirectoryInfo(path);
int sumSize = 0;
foreach (FileSystemInfo fsInfo in dirInfo.GetFileSystemInfos())
{
if (fsInfo.Attributes.ToString().ToLower() == "directory")
{
sumSize += getDirectorySize(fsInfo.FullName);
}
else
{
FileInfo fiInfo = new FileInfo(fsInfo.FullName);
sumSize += Convert.ToInt32(fiInfo.Length / 1024);
}
}
return sumSize;
}
#endregion

#region 在当前目录下创建文件夹
/// <summary>
/// 在当前目录下创建文件夹
/// </summary>
/// <param name="FolderPathName"></param>
public int CreateFolder(string Path)
{
int fi = 0;
if (Path.Trim().Length > 0)
{
try
{
string ss = judge(Path);
if (!Directory.Exists(ss))
{
Directory.CreateDirectory(ss);
fi = 1;//新建成功
}
else
{
fi = 2;//已经存在
}
}
catch
{
fi = 3;//添加失败
}
}
return fi;
}
#endregion

#region 删除一个文件夹下面的子文件夹和文件
/// <summary>
/// 删除一个文件夹下面的子文件夹和文件
/// </summary>
/// <param name="FolderPathName"></param>
/// <returns></returns>
public int DeleteChildFolder(string FolderPathName)
{
int fi = 0;
if (FolderPathName.Trim().Length > 0)
{
try
{
string ss = judge(FolderPathName);

if (Directory.Exists(ss))
{
Directory.Delete(ss, true);
fi = 1;
}
}
catch
{
fi = 2;
}
}
return fi;
}
#endregion

#region 删除一个文件
/// <summary>
/// 删除一个文件
/// </summary>
/// <param name="FilePathName"></param>
/// <returns></returns>
public int DeleteFile(string FilePathName)
{
int fi = 0;
try
{
string ss = judge(FilePathName);
FileInfo DeleFile = new FileInfo(ss);
DeleFile.Delete();
fi = 1;
}
catch
{
fi = 2;
}
return fi;
}
#endregion

#region 删除整个文件夹及其子文件夹和文件
/// <summary>
/// 删除整个文件夹及其子文件夹和文件
/// </summary>
/// <param name="FolderPathName"></param>
public void DeleParentFolder(string FolderPathName)
{
try
{
string ss = judge(FolderPathName);
DirectoryInfo DelFolder = new DirectoryInfo(ss);
if (DelFolder.Exists)
{
DelFolder.Delete();
}
}
catch
{
}
}
#endregion

#region 在当前目录下新建文件
/// <summary>
/// 在当前目录下新建文件
/// </summary>
/// <param name="FilePathName"></param>
public int CreateFile(string FilePathName)
{
int fi = 0;
try
{
string ss = judge(FilePathName);

FileInfo CreateFile = new FileInfo(ss); //创建文件
if (!CreateFile.Exists)
{
FileStream FS = CreateFile.Create();
FS.Close();
fi = 1;
}
else
{
fi = 2;
}
}
catch
{
fi = 3;
}
return fi;
}
#endregion

#region 在文件里追加内容
/**/
///
/// 在文件里追加内容
///
///
public void ReWriteReadinnerText(string FilePathName, string WriteWord)
{
try
{
//建立文件夹和文件
//CreateFolder(FilePathName);
CreateFile(FilePathName);
//得到原来文件的内容
FileStream FileRead = new FileStream(System.Web.HttpContext.Current.Server.MapPath

(FilePathName).ToString(), FileMode.Open, FileAccess.ReadWrite);
StreamReader FileReadWord = new StreamReader(FileRead, System.Text.Encoding.Default);
string OldString = FileReadWord.ReadToEnd().ToString();
OldString = OldString + WriteWord;
//把新的内容重新写入
StreamWriter FileWrite = new StreamWriter(FileRead, System.Text.Encoding.Default);
FileWrite.Write(WriteWord);
//关闭
FileWrite.Close();
FileReadWord.Close();
FileRead.Close();
}
catch
{
// throw;
}
}
#endregion

#region 判断路径是否为物理路径
/// <summary>
/// 判断路径是否为物理路径
/// </summary>
/// <param name="FilePathName"></param>
/// <returns></returns>
public static string judge(string FilePathName)
{
string ss = "";
string RegexString = @"\b[a-z]:\\.*";//判断是否是绝对路径
MatchCollection Matchs = Regex.Matches(FilePathName, RegexString, System.Text.RegularExpressions.RegexOptions.IgnoreCase);
if (Matchs.Count > 0)
{
ss = FilePathName;
}
else
{
ss = AnalyzeLabel.GetMapPath(FilePathName);
}
return ss;
}
#endregion

#region 修改当前文件的文件名
/// <summary>
/// 修改当前文件的文件名
/// </summary>
/// <param name="FilePathName"></param>
/// <param name="name"></param>
/// <returns></returns>
public int updateSessionPath(string FilePathName, string name, string type)
{
int fi = 0;
try
{

string ss = judge(FilePathName);
if (type == "目录")
{
if (Directory.Exists(ss))
{

DirectoryInfo dirInfo = new DirectoryInfo(ss);
string dd = ss.Replace(dirInfo.Name, "") + name;
Directory.Move(ss, dd);
fi = 1;
}

}
else
{
if (File.Exists(ss))
{
DirectoryInfo dirInfo = new DirectoryInfo(ss);
string dd = ss.Replace(dirInfo.Name, "") + name + dirInfo.Extension;
File.Move(ss, dd);
fi = 1;
}
}
}
catch
{
fi = 2;
}
return fi;
}
#endregion

#region 编辑文件并保存
/// <summary>
/// 编辑文件并保存
/// </summary>
/// <param name="FilePathName"></param>
/// <returns></returns>
public string ReaderFileData(string FilePathName, string modellist)
{
string tishi = "";
try
{
string ss = judge(FilePathName);
if (File.Exists(ss)) //如果文件不存在则创建
{
//初始化一个文本输入流
StreamWriter sw = new StreamWriter(ss, false, Encoding.UTF8);
//向文件中写入内容
sw.WriteLine(modellist);
tishi = "1";
//释放资源
sw.Close();
}
else
{
tishi = "3";//文件不存在
}

}
catch
{
tishi = "2";
}
return tishi;
}
#endregion

#region 读取文件内容
/// <summary>
/// 读取文件内容
/// </summary>
/// <param name="strfile"></param>
/// <returns></returns>
public string GetInterIDList(string strfile)
{
string strout;
strout = "";
string url = judge(strfile);
if (File.Exists(url))
{
StreamReader sr = new StreamReader(url, Encoding.UTF8);
String input = sr.ReadToEnd();
sr.Close();
strout = input;
}
else
{
strout = "模板文件不存在";
}
return strout;
}
#endregion

#region 移动文件到指定文件夹
/// <summary>
/// 移动文件到指定文件夹
/// </summary>
/// <param name="FilePatUrl">文件url</param>
/// <param name="name">移动的路径</param>
/// <returns></returns>
public int MoveSessionPath(string FilePatUrl, string MoveUrl)
{
int fi = 0;
try
{
string ss = judge(FilePatUrl);
if (File.Exists(ss))//移动文件
{
DirectoryInfo dirInfo = new DirectoryInfo(MoveUrl);
string dd = MoveUrl.Replace(dirInfo.Name, "");//获取文件夹的路径
if (Directory.Exists(dd))
{
if (!File.Exists(MoveUrl))//判断要移动的文件夹是否存在相同文件
{

File.Move(ss, MoveUrl);//移动文件
fi = 1;
}
else
{
File.Delete(MoveUrl);//删除原有文件
File.Move(ss, MoveUrl);//移动文件
fi = 1;
}
}
else
{
Directory.CreateDirectory(dd);
File.Move(ss, MoveUrl);
fi = 1;
}
}
if (Directory.Exists(ss))//移动文件夹
{
CopyFolder(ss, MoveUrl);
if (Directory.Exists(ss))
{
Directory.Delete(ss, true);
}
fi = 1;
}
}
catch
{
fi = 2;
}
return fi;
}
#endregion

#region 移动文件夹
/// <summary>
/// 移动文件夹
/// </summary>
/// <param name="strFromPath">要移动的文件夹</param>
/// <param name="strToPath">要移到的目标文件夹</param>
public static void CopyFolder(string strFromPath, string strToPath)
{
//如果源文件夹不存在,则创建
if (!Directory.Exists(strFromPath))
{
Directory.CreateDirectory(strFromPath);
}

//取得要拷贝的文件夹名
string strFolderName = strFromPath.Substring(strFromPath.LastIndexOf("\\") + 1, strFromPath.Length - strFromPath.LastIndexOf("\\") - 1);

//如果目标文件夹中没有源文件夹则在目标文件夹中创建源文件夹
if (!Directory.Exists(strToPath))
{
Directory.CreateDirectory(strToPath);
}

//创建数组保存源文件夹下的文件名
string[] strFiles = Directory.GetFiles(strFromPath);

//循环拷贝文件
for (int i = 0; i < strFiles.Length; i++)
{
//取得拷贝的文件名,只取文件名,地址截掉。
string strFileName = strFiles[i].Substring(strFiles[i].LastIndexOf("\\") + 1, strFiles[i].Length - strFiles[i].LastIndexOf("\\") - 1);
//开始拷贝文件,true表示覆盖同名文件
File.Copy(strFiles[i], strToPath + "\\" + strFileName, true);
FileInfo DeleFile = new FileInfo(strFiles[i]);
DeleFile.Delete();
}

//创建DirectoryInfo实例
DirectoryInfo dirInfo = new DirectoryInfo(strFromPath);
//取得源文件夹下的所有子文件夹名称
DirectoryInfo[] ZiPath = dirInfo.GetDirectories();
for (int j = 0; j < ZiPath.Length; j++)
{
//获取所有子文件夹名
string strZiPath = strFromPath + "\\" + ZiPath[j].ToString();
//把得到的子文件夹当成新的源文件夹,从头开始新一轮的拷贝
CopyFolder(strZiPath, strToPath + "\\" + ZiPath[j].ToString());
}
}
#endregion


}
}

posted on 2015-08-12 14:06  咸菜v  阅读(275)  评论(0编辑  收藏  举报

导航