ASP.NET中的文件操作(文件信息,新建,移动,复制,重命名,上传,遍历)(亲测详细)
做了几天的文件操作,现在来总结一下,错误之处,还望指点!以文件为例,如果对文件夹操作,基本上将File换为Directory即可(例:FileInfo file = new FileInfo(Path);与DirectoryInfo directory = new DirectoryInfo (Path);)
1获取文件信息
在知道文件相对路径的情形,下面代码可以获取文件的详细信息
public static void fileinfo(string Path)
{
Path = Server.MapPath(Path);//获取文件的物理路径
FileInfo file = new FileInfo(Path);//实例该路径文件信息
var length=file.Length;//文件大小,字节
var name = file.Name;//文件名
var fullname = file.FullName;//文件路径
var extension = file.Extension;//文件后缀名
......
}
获取的信息还有创建时间,最后访问时间等等,可以自行研究
2新建文件
新建一个文件
public static void NewFile(string filePath)
{
filePath=Server.MapPath(filePath);//获取想创建文件的物理路径
if (System.IO.File.Exists(newfilepath))
{
//判断新建的文件是否已经存在
throw new Exception("文件已经存在")
} System.IO.File.Create(newfilepath);//创建
......
}
3复制文件,移动(剪切)文件,重命名文件
复制文件:
public static void Copy(string Path,string targetPath)
{
Path = Server.MapPath(Path);//原文件的物理路径
targetPath = Server.MapPath(targetPath);//复制到的新位置物理路径
//判断到的新地址是否存在重命名文件
if (System.IO.File.Exists(targetPath))
{
throw new Exception("存在同名文件");//抛出异常
}
System.IO.File.Copy(Path,targetPath);//复制到新位置,不允许覆盖现有文件
.......
}
移动文件,重命名:
public static void MoveOrRename(string Path,string targetPath)
{
Path = Server.MapPath(Path);//原文件的物理路径
targetPath = Server.MapPath(targetPath);//移动到的新位置的物理路径(如果还是当前文件夹,则会重命名文件)
//判断到的新地址是否存在重命名文件
if (System.IO.File.Exists(targetPath))
{
//判断是新位置是否存在同名(判断重命名是狗和其他文件冲突)
throw new Exception("已经存在同名文件");
}
System.IO.File.Move(Path,targetPath);//2个文件在不同目录则是移动,如果在相同目录下则是重命名
......
}
复制文件不会删除,移动或者重命名(方法相同,就是目标位置不同)会删除原文件.
4上传文件
[HttpPost]//通过Post请求接收前台传来的文件数据
public ActionResult UploadFile(string dirPath)
{
var filepath = Server.MapPath(Path);//获取上传的文件存入目录的物理路径
var file = Request.Files["file"];//获取文件内容
if (file == null || file.ContentLength == )
{
throw new Exception("文件不存在");//简单判断下文件
}
var newfilepath = Server.MapPath(dirPath + "\\" + file.FileName);//获取文件名的物理路径
//判断要上传的文件是否与目录中的文件重命名
if (System.IO.File.Exists(newfilepath))
{
throw new Exception("文件不存在");//简单判断下文件是否存在
}
//文件存放到指定的文件中 ;
file.SaveAs(newfilepath);
......
}
会自动创建存有该类容和命名的文件,不用多此一举去创建一个新文件再放入内容.
5遍历当前目录和其子目录所有文件
private static string[] GetFiles(string dir, string regexPattern = null, bool recurse = true, bool throwEx = false)
{
//recurse:是否递归
//throwEx:是否报出异常
List<string> lst = new List<string>();
try
{
foreach (string item in Directory.GetFileSystemEntries(dir))
{
try
{
bool isFile = (System.IO.File.GetAttributes(item) & FileAttributes.Directory) != FileAttributes.Directory; if (isFile && (regexPattern == null || Regex.IsMatch(Path.GetFileName(item), regexPattern, RegexOptions.IgnoreCase | RegexOptions.Multiline)))
{ lst.Add(item); } //递归
if (recurse && !isFile) { lst.AddRange(GetFiles(item, regexPattern, true)); }
}
catch { if (throwEx) { throw; } }
}
}
catch { if (throwEx) { throw; } } return lst.ToArray();
}
这个不多说,网上找到的代码,亲测有效.
ASP.NET中的文件操作(文件信息,新建,移动,复制,重命名,上传,遍历)(亲测详细)的更多相关文章
- ASP.NET中上传图片检测其是否为真实的图片 防范病毒上传至服务器
一.需求 我们在用.net开发网站时,经常会用到图片上传,可以说是每个网站必备的,大到门户网站,电商网站,政务系统,OA系统,小到企业网站,个人网站,博客网站,导航网站等等,都有用到图片上传,那么在客 ...
- Drupal8重命名上传的中文名文件
完整的模块代码文件在Coding.net上,想直接使用的请前往下载:https://coding.net/u/yamus/p/chinese_rename/git/tree/master 最近吧Dru ...
- PHP中DirectIO直操作文件扩展的使用
关于 PHP 的文件操作,我们也将是通过一系列的文章来进行学习.今天我们先学习的是一个很少人使用过,甚至很多人根本不知道的扩展,它与我们日常的文件操作有些许的不同.不过这些差别并不是我们肉眼所能直观看 ...
- 【转】asp.net(c#)使用HttpWebRequest附加携带请求参数以post方式模拟上传大文件(以图片为例)到Web服务器端
原文地址:http://docode.top/Article/Detail/10002 目录: 1.Http协议上传文件(以图片为例)请求报文体内容格式 2.完整版HttpWebRequest模拟上传 ...
- 在 github 中新建仓库后,如何上传文件到这个仓库里面。
在 github 中新建仓库后,如何上传文件到这个仓库里面. libin@hglibin MINGW64 /e/github.io (master) $ git remote libin@hglibi ...
- Java中使用HttpPost上传文件以及HttpGet进行API请求(包含HttpPost上传文件)
Java中使用HttpPost上传文件以及HttpGet进行API请求(包含HttpPost上传文件) 一.HttpPost上传文件 public static String getSuffix(fi ...
- FtpClient上传文件速度非常慢,而且大小为0,上传失败
问题发生: 环境:VSFTP+FTPClient+Client 使用FTPClient上传文件的时候总是卡住,而且文件大小为0,上传失败, 解决方案: 添加代码:调用FTPClient的enterLo ...
- ASP.NET中App_Code,App_Data等文件夹的作用
http://www.cnblogs.com/shiyu007/archive/2007/12/04/982264.html 1. Bin文件夹 Bin文件夹包含应用程序所需的,用于控件.组件或者需 ...
- delphi 文件操作(信息获取)
delphi获取Exe文件版本信息的函数 Type TFileVersionInfo = Record FixedInfo:TVSFixedFileInfo; {版本信息} CompanyName:S ...
随机推荐
- jenkins配置邮件
1.安装 Email Extension Plugin 插件 2.进入系统管理--系统设置 3.按照如下图设置 首先找到 Extended E-mail Notification
- PAT——乙级真题1003代码
#include<iostream> #include<string> using namespace std; int getLength(string str0); int ...
- easyUI 复选框批量操作
前台js代码 function destroyExcelout(){ //返回选中多行 var row = $('#dg').datagrid('getSelections' ...
- Android xml资源文件中@、@android:type、@*、?、@+含义和区别
一.@代表引用资源 1.引用自定义资源.格式:@[package:]type/name android:text="@string/hello" 2.引用系统资源.格式:@andr ...
- 通什翡翠商城大站协议邮件群发系统日发20-30万封不打码不换ip不需发件箱100%进收件箱
用一种新的技术思维去群发邮件一种不用换IP,不需要任何发件箱的邮件群发方式一种不需要验证码,不需要**代码变量的邮件群发方式即使需要验证码也能全自动识别验证码的超级智能软件教你最核心的邮件群发思维和软 ...
- VS2013打开项目Web加载失败
今天打开一个好久没打开过的老项目,发现web加载失败,如图: 然后重新加载项目,提示: 一开始直接在网上找答案,结果看的答案都不靠谱,只好自己动手了, 先看了 这里面是基础配置:大概看过后,又去看了提 ...
- C#中try catch中throw ex和throw方式抛出异常有何不同
我们在C#的try catch代码块中里面经常使用throw语句抛出捕捉到的异常,但是你知道吗使用throw ex和throw抛出捕获到的异常效果是不一样的. 异常捕捉的原理 首先先介绍一下C#异常捕 ...
- PL/SQL Developer主数据库连接和窗口连接切换
Oracle开发者估计对PL/SQL Developer都非常熟悉了,里面有些小的功能点大概还有些初学者没发现.PL/SQL Developer支持多连接多窗口,下面详细说说. 主连接的概念 打开PL ...
- 制作centos的U盘启动盘
制作centos的U盘启动盘比ubuntu麻烦一些,因为可能涉及到fat32文件格式不支持大于4G的文件存储的问题,而最新版本的centos就是大于4G的,所以就需要对U盘进行分区. 一个做主引导,一 ...
- 七牛整合php上传从微信下载接口下载下来的文件
因为ios系统直接读取不了MP3格式的文件,所以从微信接口下载下来的MP3格式音频上传到七牛后要转码. Sample code: public function doMobileUploadT ...