ASP.NET中的文件操作(文件信息,新建,移动,复制,重命名,上传,遍历)(亲测详细)

做了几天的文件操作,现在来总结一下,错误之处,还望指点!以文件为例,如果对文件夹操作,基本上将File换为Directory即可(例:FileInfo file = new FileInfo(Path);与DirectoryInfo directory = new DirectoryInfo (Path);)

1获取文件信息

在知道文件相对路径的情形,下面代码可以获取文件的详细信息

 1           public static void fileinfo(string Path)
 2         {
 3             Path = Server.MapPath(Path);//获取文件的物理路径
 4             FileInfo file = new FileInfo(Path);//实例该路径文件信息
 5             var length=file.Length;//文件大小,字节
 6             var name = file.Name;//文件名
 7             var fullname = file.FullName;//文件路径
 8             var extension = file.Extension;//文件后缀名
 9             ......10          }

获取的信息还有创建时间,最后访问时间等等,可以自行研究

2新建文件

新建一个文件

 1       public static void NewFile(string filePath)
 2         {
 3             filePath=Server.MapPath(filePath);//获取想创建文件的物理路径
 4             if (System.IO.File.Exists(newfilepath))
 5             {
 6                 //判断新建的文件是否已经存在
 7                 throw new Exception("文件已经存在")
 8             }
 9
10             System.IO.File.Create(newfilepath);//创建
11             ......
12         }

3复制文件,移动(剪切)文件,重命名文件

复制文件:

 1         public static void Copy(string Path,string targetPath)
 2         {
 3             Path = Server.MapPath(Path);//原文件的物理路径
 4             targetPath = Server.MapPath(targetPath);//复制到的新位置物理路径
 5             //判断到的新地址是否存在重命名文件
 6             if (System.IO.File.Exists(targetPath))
 7             {
 8                 throw new Exception("存在同名文件");//抛出异常
 9             }        10              System.IO.File.Copy(Path,targetPath);//复制到新位置,不允许覆盖现有文件
11             .......
12         }

移动文件,重命名:

 1      public static void MoveOrRename(string Path,string targetPath)
 2         {
 3             Path = Server.MapPath(Path);//原文件的物理路径
 4             targetPath = Server.MapPath(targetPath);//移动到的新位置的物理路径(如果还是当前文件夹,则会重命名文件)
 5             //判断到的新地址是否存在重命名文件
 6             if (System.IO.File.Exists(targetPath))
 7             {
 8                 //判断是新位置是否存在同名(判断重命名是狗和其他文件冲突)
 9                 throw new Exception("已经存在同名文件");
10             }11             System.IO.File.Move(Path,targetPath);//2个文件在不同目录则是移动,如果在相同目录下则是重命名
12             ......
13         }

复制文件不会删除,移动或者重命名(方法相同,就是目标位置不同)会删除原文件.

 4上传文件

 1         [HttpPost]//通过Post请求接收前台传来的文件数据
 2         public ActionResult UploadFile(string dirPath)
 3         {
 4             var filepath = Server.MapPath(Path);//获取上传的文件存入目录的物理路径
 5             var file = Request.Files["file"];//获取文件内容
 6             if (file == null || file.ContentLength == 0)
 7             {
 8                 throw new Exception("文件不存在");//简单判断下文件
 9             }
10             var newfilepath = Server.MapPath(dirPath + "\\" + file.FileName);//获取文件名的物理路径
11             //判断要上传的文件是否与目录中的文件重命名
12             if (System.IO.File.Exists(newfilepath))
13             {
14                 throw new Exception("文件不存在");//简单判断下文件是否存在
15             }
16             //文件存放到指定的文件中 ;
17             file.SaveAs(newfilepath);
18             ......
19         }

会自动创建存有该类容和命名的文件,不用多此一举去创建一个新文件再放入内容.

 5遍历当前目录和其子目录所有文件

 1       private static string[] GetFiles(string dir, string regexPattern = null, bool recurse = true, bool throwEx = false)
 2         {
 3             //recurse:是否递归
 4             //throwEx:是否报出异常
 5             List<string> lst = new List<string>();
 6             try
 7             {
 8                 foreach (string item in Directory.GetFileSystemEntries(dir))
 9                 {
10                     try
11                     {
12                         bool isFile = (System.IO.File.GetAttributes(item) & FileAttributes.Directory) != FileAttributes.Directory;
13
14                         if (isFile && (regexPattern == null || Regex.IsMatch(Path.GetFileName(item), regexPattern, RegexOptions.IgnoreCase | RegexOptions.Multiline)))
15                         { lst.Add(item); }
16
17                         //递归
18                         if (recurse && !isFile) { lst.AddRange(GetFiles(item, regexPattern, true)); }
19                     }
20                     catch { if (throwEx) { throw; } }
21                 }
22             }
23             catch { if (throwEx) { throw; } }
24
25             return lst.ToArray();
26         }

这个不多说,网上找到的代码,亲测有效.

时间: 2024-10-12 08:32:30

ASP.NET中的文件操作(文件信息,新建,移动,复制,重命名,上传,遍历)(亲测详细)的相关文章

在Asp.net中为图像加入水印信息

using System.Drawing; using System.IO; using System.Drawing.Imaging; private void AddTextToImg(string fileName,string text) { if(!File.Exists(MapPath(fileName))) { throw new FileNotFoundException("The file don't exist!"); } if( text == string.Em

【转】asp.net(c#)使用HttpWebRequest附加携带请求参数以post方式模拟上传大文件(以图片为例)到Web服务器端

原文地址:http://docode.top/Article/Detail/10002 目录: 1.Http协议上传文件(以图片为例)请求报文体内容格式 2.完整版HttpWebRequest模拟上传文件请求报文内容封装 3.asp.net(c#)使用HttpWebRequest携带请求参数模拟上传文件封装源码下载 一.Http协议上传文件(以图片为例)请求报文体内容格式 首先,我们来看下通过浏览器上传文件的请求报文内容格式,这里以本人自己写的实例为例,如下图.除了能上传图片(即:头像字段),还

Linux中使用Shell把报警信息发送至邮件和微信上

Linux中使用Shell把报警信息发送至邮件和微信上 创建企业微信报警 注册一个企业微信号 点击企业微信,进行企业注册. 注册成功后会看到企业信息页面,把企业ID先记录下来,后面发送报警脚本里需要配置. 创建一个部门,专供发送报警用,并添加需要接收报警的成员 点击"通讯录",再点击+号,选择添加部门 把部门ID记录下来,后面配置web端用户报警媒介的收件人要用到. 给刚创建的部门添加成员,可以直接添加成员也可以微信邀请,可以先将管理员微信添加进来. 新增一个第三方应用 点击应用与小程

代码操作Sharepoint文档库(创建、上传附件)

代码操作Sharepoint文档库(创建.上传附件) 做项目中遇到客户需求,根据Infopath表单生成Excel并上传到Sharepoint指定文档库中 创建文档库 SPSite site = new SPSite(siteurl); SPListItem item = site.AllWebs["网站名"].Lists["列表名"].Folders.Add("文档库URL", SPFileSystemObjectType.Folder); i

python基本文件操作(文件输入和输出)

文件输入输出中常用的文件对象方法: open : 返回一个新的文件对象,调用该对象的上的方法可对文件进行任何操作 readline: 读取一行你给哦如果您包括结尾的换行符在内 write: 将数据写入文件中 close: 关闭文件对象:   举例:读取E盘中的work.txt文件 f = open('work.txt') line  =f.readline() print(line) f.close() 如果给readline设置一个参数 n 则读取n个字符 不设置 则只读取一行包括结尾的换行符

liunx文件操作 文件压缩

文件备份和压缩命令 在Linux中,常用的文件压缩工具有gzip,bzip2,zip. 'bzip2'是最理想的压缩工具,它提供了最大限度的压缩. 'zip'兼容好,windows也支持. bzip2命令 bzip2 是一个压缩能力更强的压缩程序,.bz2结尾的文件就是bzip2压缩的结果. 要使用bzip2压缩文件,在shell提示下输入命令: bzip2 filename 文件即会被压缩,并保存为filename.bz2 要解压文件,输入命令: bunzip2 filename.bz2 fi

java _io_ File类文件操作--文件存在

File f=new File("C:/Users/10853/eclipse-workspace/hell/linux学习路线.png"); 文件对象操作方法: f2.exists(); //文件是否存在 f2.isDirectory(); //文件是否是目录 f2.isFile(); //是否是文件 new Date(f2.lastModified());//文件最后修改日期 f2.length(); //文件大小 f2.getName(); //文件名 f2.getPath();

Wince 6.0适用 .NET 使用HttpRequest的Post上传文件,服务端的Web API接收Post上传上来的文件 代码

//调用的示例 private string fileName = "InStorageData.csv"; string filePath = parentPath + CommonHelper.UPLOAD + "\\" + fileName;//文件的全路径含文件名称及扩展名 string strResult = CommonHelper.SendFile(filePath, new Uri(CommonHelper.strURL + "PostFo

Vbs程序备份指定文件到指定目录并且以日期重命名

说到备份,相信大家都会想到的第一个方法就是通过windows系统自带的window backup功能进行数据备份.后来微软又出了system centere产品后,就出现了一个新的备份产品---system centere data backup manager(DPM).这些功能备份比较大的数据还可以,但是对于小文件的备份有点浪费了,因为有的时候由于工作需要备份几个重要的文件(配置文件),不需要全备,所以说呢,很多备份软件有点浪费,对于小文件的备份来说不是非常方便.以上仅仅是个人的想法.我算是