做了几天的文件操作,现在来总结一下,错误之处,还望指点!以文件为例,如果对文件夹操作,基本上将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中的文件操作(文件信息,新建,移动,复制,重命名,上传,遍历)(亲测详细)的更多相关文章

  1. ASP.NET中上传图片检测其是否为真实的图片 防范病毒上传至服务器

    一.需求 我们在用.net开发网站时,经常会用到图片上传,可以说是每个网站必备的,大到门户网站,电商网站,政务系统,OA系统,小到企业网站,个人网站,博客网站,导航网站等等,都有用到图片上传,那么在客 ...

  2. Drupal8重命名上传的中文名文件

    完整的模块代码文件在Coding.net上,想直接使用的请前往下载:https://coding.net/u/yamus/p/chinese_rename/git/tree/master 最近吧Dru ...

  3. PHP中DirectIO直操作文件扩展的使用

    关于 PHP 的文件操作,我们也将是通过一系列的文章来进行学习.今天我们先学习的是一个很少人使用过,甚至很多人根本不知道的扩展,它与我们日常的文件操作有些许的不同.不过这些差别并不是我们肉眼所能直观看 ...

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

    原文地址:http://docode.top/Article/Detail/10002 目录: 1.Http协议上传文件(以图片为例)请求报文体内容格式 2.完整版HttpWebRequest模拟上传 ...

  5. 在 github 中新建仓库后,如何上传文件到这个仓库里面。

    在 github 中新建仓库后,如何上传文件到这个仓库里面. libin@hglibin MINGW64 /e/github.io (master) $ git remote libin@hglibi ...

  6. Java中使用HttpPost上传文件以及HttpGet进行API请求(包含HttpPost上传文件)

    Java中使用HttpPost上传文件以及HttpGet进行API请求(包含HttpPost上传文件) 一.HttpPost上传文件 public static String getSuffix(fi ...

  7. FtpClient上传文件速度非常慢,而且大小为0,上传失败

    问题发生: 环境:VSFTP+FTPClient+Client 使用FTPClient上传文件的时候总是卡住,而且文件大小为0,上传失败, 解决方案: 添加代码:调用FTPClient的enterLo ...

  8. ASP.NET中App_Code,App_Data等文件夹的作用

    http://www.cnblogs.com/shiyu007/archive/2007/12/04/982264.html 1.  Bin文件夹 Bin文件夹包含应用程序所需的,用于控件.组件或者需 ...

  9. delphi 文件操作(信息获取)

    delphi获取Exe文件版本信息的函数 Type TFileVersionInfo = Record FixedInfo:TVSFixedFileInfo; {版本信息} CompanyName:S ...

随机推荐

  1. iptables的conntrack表满了导致访问网站很慢

    iptables的conntrack表满了导致访问网站很慢 转载自:https://my.oschina.net/jean/blog/189935 检查系统conntrack表是否满 现象:突然发现访 ...

  2. 简介 jCanvas:当 jQuery遇上HTML5 Canvas

    https://github.com/caleb531/jcanvas HTML5 可以直接在你的网页中使用 <canvas> 元素及其相关的 JavaScript API绘制的图形. 在 ...

  3. hadoop实战 -- 网站日志KPI指标分析

    本项目分析apache服务器产生的日志,分析pv.独立ip数和跳出率等指标.其实这些指标在第三方系统中都可以检测到,在生产环境中通常用来分析用户交易等核心数据,此处只是用于演示说明日志数据的分析流程. ...

  4. cygwin E437

    这个简单错误居然查到了 报错E437: terminal capability "cm" required 执行:# export TERM=xterm

  5. 寿司点餐系统Sprint1总结

    为期十天的一个冲刺,说长不长,说短不短.从一开始的接收课程任务到第一次聚集讨论. 确定方案.实行方案,再到最后的决定结束第一个冲刺,都是大家一起讨论着加小小的默契一步步 向前.没有完美,但是总体完成的 ...

  6. 扩展Wcf call security service, 手动添加 Soap Security Head.

    有次我们有个项目需要Call 一个 Java 的 web service, Soap包中需要一个 Security Head <soapenv:Header> <wsse:Secur ...

  7. linux Centos下搭建gitolite服务器

    1.安装git sudo yum install git -y 2.添加git管理账号 sudo adduser git 3.将gitolite克隆到本地,并安装 sudo mkdir /var/gi ...

  8. 约在CBD,吃饭

    午饭当然是外卖. CBD上班的同仁们不用约,都去了一间叫“大食堂”的餐厅. 它在商业街繁华地段的二楼,有1000平米.你不知道么,餐馆们都躲到找不着的角落,变成了厨房,这里的租金便宜得很.但它不做饭, ...

  9. 第一次链接Azure,固定实例内部IP(DIP)

    下载web pi 下载Azure powershell 打开 Poweshell ISE 输入 Get-AzurePublishSettingsFile -Environment "Azur ...

  10. (temp)catch ip

    String str = "192.168.1.100"; String[] ipStr = str.split("\\."); ]; ; i < ; i ...