欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Asp.Net 文件操作基类(读取,删除,批量拷贝,删除,写入,获取文件夹大小,文件属性,遍历目录)

程序员文章站 2023-09-19 22:26:44
复制代码 代码如下: using system; using system.io; using system.text; using system.data; using...

复制代码 代码如下:

using system;
using system.io;
using system.text;
using system.data;
using system.web.ui;
using system.web.ui.webcontrols;
namespace ec
{
/// <summary>
/// 文件操作类
/// </summary>
public class fileobj : idisposable
{
private bool _alreadydispose = false;
#region 构造函数
public fileobj()
{
//
// todo: 在此处添加构造函数逻辑
//
}
~fileobj()
{
dispose(); ;
}
protected virtual void dispose(bool isdisposing)
{
if (_alreadydispose) return;
//if (isdisposing)
//{
// if (xml != null)
// {
// xml = null;
// }
//}
_alreadydispose = true;
}
#endregion
#region idisposable 成员
public void dispose()
{
dispose(true);
gc.suppressfinalize(this);
}
#endregion
#region 取得文件后缀名
/****************************************
* 函数名称:getpostfixstr
* 功能说明:取得文件后缀名
* 参 数:filename:文件名称
* 调用示列:
* string filename = "aaa.aspx";
* string s = ec.fileobj.getpostfixstr(filename);
*****************************************/
/// <summary>
/// 取后缀名
/// </summary>
/// <param name="filename">文件名</param>
/// <returns>.gif|.html格式</returns>
public static string getpostfixstr(string filename)
{
int start = filename.lastindexof(".");
int length = filename.length;
string postfix = filename.substring(start, length - start);
return postfix;
}
#endregion
#region 写文件
/****************************************
* 函数名称:writefile
* 功能说明:写文件,会覆盖掉以前的内容
* 参 数:path:文件路径,strings:文本内容
* 调用示列:
* string path = server.mappath("default2.aspx");
* string strings = "这是我写的内容啊";
* ec.fileobj.writefile(path,strings);
*****************************************/
/// <summary>
/// 写文件
/// </summary>
/// <param name="path">文件路径</param>
/// <param name="strings">文件内容</param>
public static void writefile(string path, string strings)
{
if (!system.io.file.exists(path))
{
system.io.filestream f = system.io.file.create(path);
f.close();
}
system.io.streamwriter f2 = new system.io.streamwriter(path, false, system.text.encoding.getencoding("gb2312"));
f2.write(strings);
f2.close();
f2.dispose();
}
#endregion
#region 读文件
/****************************************
* 函数名称:readfile
* 功能说明:读取文本内容
* 参 数:path:文件路径
* 调用示列:
* string path = server.mappath("default2.aspx");
* string s = ec.fileobj.readfile(path);
*****************************************/
/// <summary>
/// 读文件
/// </summary>
/// <param name="path">文件路径</param>
/// <returns></returns>
public static string readfile(string path)
{
string s = "";
if (!system.io.file.exists(path))
s = "不存在相应的目录";
else
{
streamreader f2 = new streamreader(path, system.text.encoding.getencoding("gb2312"));
s = f2.readtoend();
f2.close();
f2.dispose();
}
return s;
}
#endregion
#region 追加文件
/****************************************
* 函数名称:fileadd
* 功能说明:追加文件内容
* 参 数:path:文件路径,strings:内容
* 调用示列:
* string path = server.mappath("default2.aspx");
* string strings = "新追加内容";
* ec.fileobj.fileadd(path, strings);
*****************************************/
/// <summary>
/// 追加文件
/// </summary>
/// <param name="path">文件路径</param>
/// <param name="strings">内容</param>
public static void fileadd(string path, string strings)
{
streamwriter sw = file.appendtext(path);
sw.write(strings);
sw.flush();
sw.close();
}
#endregion
#region 拷贝文件
/****************************************
* 函数名称:filecoppy
* 功能说明:拷贝文件
* 参 数:orignfile:原始文件,newfile:新文件路径
* 调用示列:
* string orignfile = server.mappath("default2.aspx");
* string newfile = server.mappath("default3.aspx");
* ec.fileobj.filecoppy(orignfile, newfile);
*****************************************/
/// <summary>
/// 拷贝文件
/// </summary>
/// <param name="orignfile">原始文件</param>
/// <param name="newfile">新文件路径</param>
public static void filecoppy(string orignfile, string newfile)
{
file.copy(orignfile, newfile, true);
}
#endregion
#region 删除文件
/****************************************
* 函数名称:filedel
* 功能说明:删除文件
* 参 数:path:文件路径
* 调用示列:
* string path = server.mappath("default3.aspx");
* ec.fileobj.filedel(path);
*****************************************/
/// <summary>
/// 删除文件
/// </summary>
/// <param name="path">路径</param>
public static void filedel(string path)
{
file.delete(path);
}
#endregion
#region 移动文件
/****************************************
* 函数名称:filemove
* 功能说明:移动文件
* 参 数:orignfile:原始路径,newfile:新文件路径
* 调用示列:
* string orignfile = server.mappath("../说明.txt");
* string newfile = server.mappath("../../说明.txt");
* ec.fileobj.filemove(orignfile, newfile);
*****************************************/
/// <summary>
/// 移动文件
/// </summary>
/// <param name="orignfile">原始路径</param>
/// <param name="newfile">新路径</param>
public static void filemove(string orignfile, string newfile)
{
file.move(orignfile, newfile);
}
#endregion
#region 在当前目录下创建目录
/****************************************
* 函数名称:foldercreate
* 功能说明:在当前目录下创建目录
* 参 数:orignfolder:当前目录,newfloder:新目录
* 调用示列:
* string orignfolder = server.mappath("test/");
* string newfloder = "new";
* ec.fileobj.foldercreate(orignfolder, newfloder);
*****************************************/
/// <summary>
/// 在当前目录下创建目录
/// </summary>
/// <param name="orignfolder">当前目录</param>
/// <param name="newfloder">新目录</param>
public static void foldercreate(string orignfolder, string newfloder)
{
directory.setcurrentdirectory(orignfolder);
directory.createdirectory(newfloder);
}
#endregion
#region 递归删除文件夹目录及文件
/****************************************
* 函数名称:deletefolder
* 功能说明:递归删除文件夹目录及文件
* 参 数:dir:文件夹路径
* 调用示列:
* string dir = server.mappath("test/");
* ec.fileobj.deletefolder(dir);
*****************************************/
/// <summary>
/// 递归删除文件夹目录及文件
/// </summary>
/// <param name="dir"></param>
/// <returns></returns>
public static void deletefolder(string dir)
{
if (directory.exists(dir)) //如果存在这个文件夹删除之
{
foreach (string d in directory.getfilesystementries(dir))
{
if (file.exists(d))
file.delete(d); //直接删除其中的文件
else
deletefolder(d); //递归删除子文件夹
}
directory.delete(dir); //删除已空文件夹
}
}
#endregion
#region 将指定文件夹下面的所有内容copy到目标文件夹下面 果目标文件夹为只读属性就会报错。
/****************************************
* 函数名称:copydir
* 功能说明:将指定文件夹下面的所有内容copy到目标文件夹下面 果目标文件夹为只读属性就会报错。
* 参 数:srcpath:原始路径,aimpath:目标文件夹
* 调用示列:
* string srcpath = server.mappath("test/");
* string aimpath = server.mappath("test1/");
* ec.fileobj.copydir(srcpath,aimpath);
*****************************************/
/// <summary>
/// 指定文件夹下面的所有内容copy到目标文件夹下面
/// </summary>
/// <param name="srcpath">原始路径</param>
/// <param name="aimpath">目标文件夹</param>
public static void copydir(string srcpath, string aimpath)
{
try
{
// 检查目标目录是否以目录分割字符结束如果不是则添加之
if (aimpath[aimpath.length - 1] != path.directoryseparatorchar)
aimpath += path.directoryseparatorchar;
// 判断目标目录是否存在如果不存在则新建之
if (!directory.exists(aimpath))
directory.createdirectory(aimpath);
// 得到源目录的文件列表,该里面是包含文件以及目录路径的一个数组
//如果你指向copy目标文件下面的文件而不包含目录请使用下面的方法
//string[] filelist = directory.getfiles(srcpath);
string[] filelist = directory.getfilesystementries(srcpath);
//遍历所有的文件和目录
foreach (string file in filelist)
{
//先当作目录处理如果存在这个目录就递归copy该目录下面的文件
if (directory.exists(file))
copydir(file, aimpath + path.getfilename(file));
//否则直接copy文件
else
file.copy(file, aimpath + path.getfilename(file), true);
}
}
catch (exception ee)
{
throw new exception(ee.tostring());
}
}
#endregion
}
}