asp.net C#文件操作(追加、拷贝、删除、移动文件、创建目录、递归删除文件夹及文件)

asp教程.net c#文件操作(追加、拷贝、删除、移动文件、创建目录、递归删除文件夹及文件)
c#追加、拷贝、删除、移动文件、创建目录、递归删除文件夹及文件、指定文件夹下 面的所有内容copy到目标文件夹下面、指定文件夹下面的所有内容detele、读取文本文件、获取文件列表、读取日志文件、写入日志文件、创建html 文件、createdirectory方法的使用
c#追加文件

streamwriter sw = file.appendtext(server.mappath(".")+"mytext.txt");
sw.writeline("追逐理想");
sw.writeline("kzlll");
sw.writeline(".net笔记");
sw.flush();
sw.close();
c#拷贝文件
string orignfile,newfile;
orignfile = server.mappath(".")+"mytext.txt";
newfile = server.mappath(".")+"mytextcopy.txt";
file.copy(orignfile,newfile,true);
c#删除文件
string delfile = server.mappath(".")+"mytextcopy.txt";
file.delete(delfile);
c#移动文件
string orignfile,newfile;
orignfile = server.mappath(".")+"mytext.txt";
newfile = server.mappath(".")+"mytextcopy.txt";
file.move(orignfile,newfile);
c#创建目录
// 创建目录c:sixage
directoryinfo d=directory.createdirectory("c:sixage");
// d1指向c:sixagesixage1
directoryinfo d1=d.createsubdirectory("sixage1");
// d2指向c:sixagesixage1sixage1_1
directoryinfo d2=d1.createsubdirectory("sixage1_1");
// 将当前目录设为c:sixage
directory.setcurrentdirectory("c:sixage");
// 创建目录c:sixagesixage2
directory.createdirectory("sixage2");
// 创建目录c:sixagesixage2sixage2_1
directory.createdirectory("sixage2sixage2_1");
递归删除文件夹及文件
<%@ page language=c#%>
<%@ import namespace="system.io"%>
<script_ runat=server>
public 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); //删除已空文件夹
response.write(dir+" 文件夹删除成功");
}
else
response.write(dir+" 该文件夹不存在"); //如果文件夹不存在则提示
}
protected void page_load (object sender ,eventargs e)
{
string dir="d:gbook11";
deletefolder(dir); //调用函数删除文件夹
}

// ======================================================
// 实现一个静态方法将指定文件夹下面的所有内容copy到目标文件夹下面
// 如果目标文件夹为只读属性就会报错。
// april 18april2005 in stu
// ======================================================
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 e)
{
messagebox.show (e.tostring());
}
}
// ======================================================
// 实现一个静态方法将指定文件夹下面的所有内容detele
// 测试的时候要小心操作,删除之后无法恢复。
// ======================================================
public static void deletedir(string aimpath)
{
try
{
// 检查目标目录是否以目录分割字符结束如果不是则添加之
if(aimpath[aimpath.length-1] != path.directoryseparatorchar)
aimpath += path.directoryseparatorchar;
// 得到源目录的文件列表,该里面是包含文件以及目录路径的一个数组
// 如果你指向delete目标文件下面的文件而不包含目录请使用下面的方法
// string[] filelist = directory.getfiles(aimpath);
string[] filelist = directory.getfilesystementries(aimpath);
// 遍历所有的文件和目录
foreach(string file in filelist)
{
// 先当作目录处理如果存在这个目录就递归delete该目录下面的文件
if(directory.exists(file))
{
deletedir(aimpath+path.getfilename(file));
}
// 否则直接delete文件
else
{
file.delete (aimpath+path.getfilename(file));
}
}
//删除文件夹
system.io .directory .delete (aimpath,true);
}
catch (exception e)
{
messagebox.show (e.tostring());
}
}
需要引用命名空间:
using system.io;
/**//// <summary>

/// </summary>
/// <param ></param>
/// <param ></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 + "" + strfoldername))
{
directory.createdirectory(strtopath + "" + strfoldername);
}
//创建数组保存源文件夹下的文件名
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 + "" + strfoldername + "" + strfilename,true);
}

//创建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 + "" + strfoldername);
}
}
一.读取文本文件
 /**//// <summary>
 /// 读取文本文件
 /// </summary>
 private void readfromtxtfile()
 {
  if(filepath.postedfile.filename != "")
  {
  txtfilepath =filepath.postedfile.filename;
  fileextname = txtfilepath.substring(txtfilepath.lastindexof(".")+1,3);
 
  if(fileextname !="txt" && fileextname != "txt")
  {
  response.write("请选择文本文件");
  }
  else
  {
  streamreader filestream = new streamreader(txtfilepath,encoding.default);
  txtcontent.text = filestream.readtoend();
  filestream.close();
  }
  }
  }
二.获取文件列表
/**//// <summary>
/// 获取文件列表
/// </summary>
private void getfilelist()
{
string strcurdir,filename,fileext;

/**////文件大小
long filesize;

/**////最后修改时间;
datetime filemodify;

/**////初始化
if(!ispostback)
{
/**////初始化时,默认为当前页面所在的目录
strcurdir = server.mappath(".");
lblcurdir.text = strcurdir;
txtcurdir.text = strcurdir;
}
else
{
strcurdir = txtcurdir.text;
txtcurdir.text = strcurdir;
lblcurdir.text = strcurdir;
}
fileinfo fi;
directoryinfo dir;
tablecell td;
tablerow tr;
tr = new tablerow();

/**////动态添加单元格内容
td = new tablecell();
td.controls.add(new literalcontrol("文件名"));
tr.cells.add(td);
td = new tablecell();
td.controls.add(new literalcontrol("文件类型"));
tr.cells.add(td);
td = new tablecell();
td.controls.add(new literalcontrol("文件大小"));
tr.cells.add(td);
td = new tablecell();
td.controls.add(new literalcontrol("最后修改时间"));
tr.cells.add(td);

tabledirinfo.rows.add(tr);

/**////针对当前目录建立目录引用对象
directoryinfo dirinfo = new directoryinfo(txtcurdir.text);

/**////循环判断当前目录下的文件和目录
foreach(filesysteminfo fsi in dirinfo.getfilesysteminfos())
{
filename = "";
fileext = "";
filesize = 0;

/**////如果是文件
if(fsi is fileinfo)
{
fi = (fileinfo)fsi;

/**////取得文件名
filename = fi.name;

/**////取得文件的扩展名
fileext = fi.extension;

/**////取得文件的大小
filesize = fi.length;

/**////取得文件的最后修改时间
filemodify = fi.lastwritetime;
}

/**////否则是目录
else
{
dir = (directoryinfo)fsi;

/**////取得目录名
filename = dir.name;

/**////取得目录的最后修改时间
filemodify = dir.lastwritetime;

/**////设置文件的扩展名为"文件夹"
fileext = "文件夹";
}

/**////动态添加表格内容
tr = new tablerow();
td = new tablecell();
td.controls.add(new literalcontrol(filename));
tr.cells.add(td);
td = new tablecell();
td.controls.add(new literalcontrol(fileext));
tr.cells.add(td);
td = new tablecell();
td.controls.add(new literalcontrol(filesize.tostring()+"字节"));
tr.cells.add(td);
td = new tablecell();
td.controls.add(new literalcontrol(filemodify.tostring("yyyy-mm-dd hh:mm:ss")));
tr.cells.add(td);
tabledirinfo.rows.add(tr);
}
}
三.读取日志文件
/**//// <summary>
/// 读取日志文件
/// </summary>
private void readlogfile()
{
/**////从指定的目录以打开或者创建的形式读取日志文件
filestream fs = new filestream(server.mappath("upedfile")+"logfile.txt", filemode.openorcreate, fileaccess.read);

/**////定义输出字符串
stringbuilder output = new stringbuilder();

/**////初始化该字符串的长度为0
output.length = 0;

/**////为上面创建的文件流创建读取数据流
streamreader read = new streamreader(fs);

/**////设置当前流的起始位置为文件流的起始点
read.basestream.seek(0, seekorigin.begin);

/**////读取文件
while (read.peek() > -1)
{
/**////取文件的一行内容并换行
output.append(read.readline() + "n");
}

/**////关闭释放读数据流
read.close();

/**////返回读到的日志文件内容
return output.tostring();
}
四.写入日志文件

/**//// <summary>
/// 写入日志文件
/// </summary>
/// <param ></param>
private void writelogfile(string input)
{
/**////指定日志文件的目录
string fname = server.mappath("upedfile") + "logfile.txt";
/**////定义文件信息对象
fileinfo finfo = new fileinfo(fname);

/**////判断文件是否存在以及是否大于2k
if ( finfo.exists && finfo.length > 2048 )
{
/**////删除该文件
finfo.delete();
}
/**////创建只写文件流
using(filestream fs = finfo.openwrite())
{
/**////根据上面创建的文件流创建写数据流
streamwriter w = new streamwriter(fs);

/**////设置写数据流的起始位置为文件流的末尾
w.basestream.seek(0, seekorigin.end);

w.write("nlog entry : ");

/**////写入当前系统时间并换行
w.write("{0} {1} rn",datetime.now.tolongtimestring(),datetime.now.tolongdatestring());

/**////写入日志内容并换行
w.write(input + "n");

/**////写入------------------------------------“并换行
w.write("------------------------------------n");

/**////清空缓冲区内容,并把缓冲区内容写入基础流
w.flush();

/**////关闭写数据流
w.close();
}
}
五.c#创建html文件
/**//// <summary>
/// 创建html文件
/// </summary>
private void createhtmlfile()
{
/**////定义和html标记数目一致的数组
string[] newcontent = new string[5];
stringbuilder strhtml = new stringbuilder();
try
{
/**////创建streamreader对象
using (streamreader sr = new streamreader(server.mappath("createhtml") + "template.html"))
{
string oneline;

/**////读取指定的html文件模板
while ((oneline = sr.readline()) != null)
{
strhtml.append(oneline);
}
sr.close();
}
}
catch(exception err)
{
/**////输出异常信息
response.write(err.tostring());
}
/**////为标记数组赋值
newcontent[0] = txttitle.text;//标题
newcontent[1] = "backcolor='#cccfff'";//背景色
newcontent[2] = "#ff0000";//字体颜色
newcontent[3] = "100px";//字体大小
newcontent[4] = txtcontent.text;//主要内容

/**////根据上面新的内容生成html文件
try
{
/**////指定要生成的html文件
string fname = server.mappath("createhtml") +"" + datetime.now.tostring("yyyymmddhhmmss") + ".html";

/**////替换html模版文件里的标记为新的内容
for(int i=0;i < 5;i++)
{
strhtml.replace("$htmlkey["+i+"]",newcontent[i]);
}
/**////创建文件信息对象
fileinfo finfo = new fileinfo(fname);

/**////以打开或者写入的形式创建文件流
using(filestream fs = finfo.openwrite())
{
/**////根据上面创建的文件流创建写数据流
streamwriter sw = new streamwriter(fs,system.text.encoding.getencoding("gb2312"));

/**////把新的内容写到创建的html页面中
sw.writeline(strhtml);
sw.flush();
sw.close();
}

/**////设置超级链接的属性
hycreatefile.text = datetime.now.tostring("yyyymmddhhmmss")+".html";
hycreatefile.navigateurl = "createhtml/"+datetime.now.tostring("yyyymmddhhmmss")+".html";
}
catch(exception err)
{
response.write (err.tostring());
}
}
createdirectory方法的使用
using system;
using system.io;

class test
{
public static void main()
{
// specify the directory you want to manipulate.
string path = @"c:mydir";

try
{
// determine whether the directory exists.
if (directory.exists(path))
{
console.writeline("that path exists already.");
return;
}

// try to create the directory.
directoryinfo di = directory.createdirectory(path);
console.writeline("the directory was created successfully at {0}.", directory.getcreationtime(path));

// delete the directory.
di.delete();
console.writeline("the directory was deleted successfully.");
}
catch (exception e)
{
console.writeline("the process failed: {0}", e.tostring());
}
finally {}
}
}

 

时间: 2024-10-01 12:30:22

asp.net C#文件操作(追加、拷贝、删除、移动文件、创建目录、递归删除文件夹及文件)的相关文章

asp.net 删除文件夹,指定文件夹,删除文件夹和所有文件,删除权限设置,递归删除文件夹目录及文件

/// <summary>      /// 用递归方法删除文件夹目录及文件      /// </summary>      /// <param name="dir">带文件夹名的路径</param>       public void DeleteFolder(string dir)      {          if (Directory.Exists(dir)) //如果存在这个文件夹删除之           {      

文件操作-c语言中怎样将数值型数组写到txt文件中,并且打开文件时不是一堆乱码?

问题描述 c语言中怎样将数值型数组写到txt文件中,并且打开文件时不是一堆乱码? 求教!请问在对文件进行读写的时候,将一double型的数组写进文件中,之后打开文件,为什么都是乱码?怎么修改才能在文件中显示数值呢? 附写的代码: #include #include #include struct type { double data[2]; }; void main() { int i; struct type dataset[200]; FILE *fp; if(!(fp=fopen("dat

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

复制代码 代码如下: 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 _alre

Asp.net(c#)常用文件操作类封装 移动 复制 删除 上传 下载等

Asp.net(c#)中常用文件操作类封装 包括:移动 复制 删除 上传 下载等 using System; using System.Configuration; using System.Data; using System.IO; using System.Text; using System.Threading; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.Ht

asp.net文件与文件夹操作类(文件删除,创建,目录删除)

下面这个文件操作类,可以删除目录并且不为空的目录哦,也可以创建文件写文件,删除文件以前递归操作目录. using system.io; using system.web; namespace sec {     /**////     /// 对文件和文件夹的操作类     ///     public class filecontrol     {          public filecontrol()          {          }          /**////     

拷贝文件-嵌入式系统中拷贝图片文件和拷贝txt文件操作相同吗?

问题描述 嵌入式系统中拷贝图片文件和拷贝txt文件操作相同吗? 在嵌入式系统中实现不同目录间的文件拷贝,现在想拷贝图片,能用标准io进行拷贝吗,会不会有什么问题? 解决方案 没有问题,都是文件,一样的拷贝.

nodejs 文件与文件操作(读写文件 删除 重命名)

读写文件nodejs中操作相对就简单很多!来看看几个例子吧. [写文本文件] // wfile.js ------------------------------  代码如下 复制代码 var fs = require("fs");   var data = 'hello 雨林博客'; fs.writeFile('c:a.txt', data, 'ascii', function(err){  if(err){  console.log('写入文件失败');  }else{  cons

PHP文件操作[总结]

1.前言        工作中涉及到数据处理,后台需要用到PHP处理数据,之前没有接触过PHP,借此机会了解了一下PHP,PHP很方便,很灵活,编码很舒服,很喜欢用PHP处理后台数据.今天总结一下php文件操作,主要涉及到文件打开.读.写和关闭. 2.PHP文件操作API 文件创建/打开 fopen:(创建并)打开一个文件或 URL 地址. 文件写入 fwrite:向文件写入内容,可安全用于二进制文件 . file_put_contents:向文件写入内容,等同依次调用 fopen,fwrite

C 和 C++ 文件操作详解

来源:http://www.cnblogs.com/likebeta/archive/2012/06/16/2551662.html 来源:http://www.cnblogs.com/likebeta/archive/2012/06/16/2551780.html C++的文件操作 在C++中,有一个stream这个类,所有的I/O都以这个"流"类为基础的,包括我们要认识的文件I/O,stream这个类有两个重要的运算符: 1.插入器(<<) 向流输出数据.比如说系统有一

文件操作类2

using System; using System.Text; using System.Web; using System.IO; namespace DotNet.Utilities {     public class FileOperate     {         #region 写文件         protected void Write_Txt(string FileName, string Content)         {             Encoding c