12.2 文件操作
细心的用户可以发现,12.1节介绍文件上传和下载时使用过File和FileInfo类,这两个类专门对文件进行操作,如判断文件是否存在、创建文件、复制文件和移动文件等。但是不同的是:File是一个静态类,FileInfo是一个密封的实例类,不能被继承。
12.2.1 获取文件基本信息
FileInfo类提供了许多属性获取文件的基本信息,如表12-3所示。
表12-3 FileInfo类的常用属性
【范例4】
获取当前程序下Images文件夹下bullet.png文件的详细信息,如文件名称、文件大小、最后一次更新时间、最后一次访问时间和文件的完整目录等。后台代码如下。
protected void Page_Load(object sender, EventArgs e) { string filepath = Server.MapPath("~") + "Images\\bullet.png"; FileInfo fi = new FileInfo(filepath); //实例化FileInfo对象 if (fi.Exists) //如果用户输入的文件路径存在 lblResult.Text = "文件名称:" + fi.Name + "<br/>文件大小:" + fi.Length +" 字节<br/>最后一次更新时间:"+fi.LastWrite Time.ToLongDateString()+fi.LastWriteTime.ToLongTimeString() + "<br/>最后一次访问时间:" + fi.LastAccessTime.ToLongDateString()+fi.LastAccessTime.ToLongTimeString() + "<br/>是否为只读文件:" + fi.IsReadOnly.ToString() + "<br/>文件的完整目录:" + fi.FullName + "<br/>文件扩展名:" + fi.Extension + "<br/>目录的完整路径:" + fi.DirectoryName + "<br/>文件的创建时间:" + fi.CreationTime.ToLongDateString() + fi.CreationTime.ToLong Time String(); else lblResult.Text = "很抱歉,您输入的文件路径并不存在,请输入正确的路径。"; }
12.2.2 判断文件是否存在
判断是否存在有两种方式:一种是通过FileInfo类的Exists属性,如范例4;另一种是通过File类的Exists()静态方法。
【范例5】
直接通过File.Exists()方法判断D磁盘下是否存在mywork.txt文件,并弹出结果。代码如下。
if (File.Exists(@"D:\mywork.txt")) Response.Write("<script>alert(’该文件存在’); </script>"); else Response.Write("<script>alert(’该文件不存在’)</script>");
12.2.3 创建文件
File类和FileInfo类都提供了创建文件的方法,File.Create()方法创建文件时有以下4种重载方式。
FileStream File.Create(string path) FileStream File.Create(string path, int bufferSize) FileStream File.Create(string path, int bufferSize, FileOptions options) FileSteam File.Create(string path, int bufferSize, FileOptions options, System.Security.AccessControl.FileSecurity fileSecurity)
其中,path表示文件的名称;bufferSize用于读取和写入文件的已放入缓冲区的字节数;options描述如何创建或覆盖该文件,它的值是System.IO.FileOptions的值之一;fileSecurity确定文件的访问控制和审核安全性,它的值是System.Security.AccessControl.FileSecurity的值之一。
【范例6】
如果D磁盘下mywork.txt文件不存在,那么调用File.Create()方法创建。代码如下。
if (! File.Exists(@"D:\mywork.txt")) File.Create(@"D:\mywork.txt"); else Response.Write("<script>alert(’该文件不存在’)</script>");
FileInfo类的Create()方法可以创建或覆盖指定的文件,实例化FileInfo类时传入一个路径,然后直接调用Create()方法即可。
【范例7】
如下代码演示FileInfo类Create()方法的使用。
FileInfo fi = new FileInfo(@"D:\mywork.txt"); fi.Create();
12.2.4 删除文件
File和FileInfo类都提供了Delete()方法删除文件。File类使用Delete()方法需要传入一个参数,该参数表示要删除的文件的名称,它不支持通配符。语法形式如下。
void File.Delete(string pah) //删除指定的文件
FileInfo类使用Delete()时直接调用即可。语法形式如下。
void FileInfo.Delete() //永久删除文件
【范例8】
通过File.Exists()方法判断D磁盘下mywork.txt文件是否存在,如果存在则删除,否则弹出提示。代码如下。
if (File.Exists(@"D:\mywork.txt")) File.Delete(@"D:\mywork.txt"); else Response.Write("<script>alert(’该文件不存在’)</script>");
12.2.5 移动文件
移动文件是指将当前文件移动到新的位置。File类提供Move()方法移动文件,开发者在使用时需要传入两个参数:第一个参数表示要移动的文件的名称,第二个参数表示文件的新路径。语法如下。
void File.Move(string sourceFileName, string destFileName)
FileInfo类提供MoveTo()方法移动文件,开发者在使用时需要传入一个参数,该参数是指要将文件移动到的路径,可以指定另一个文件名。语法如下。
void FileInfo.MoveTo(string destFileName)
提示
移动文件操作实际上是删除源文件并且创建一个新的目标文件,它和复制文件操作都支持相对路径。移动文件时可以在相同或不同的磁盘下移动,但是移动目录时必须在同一个磁盘下进行。
【范例9】
判断D磁盘下是否存在mywork.txt文件,如果存在则移动文件到F磁盘,否则创建文件。代码如下。
FileInfo fi = new FileInfo(@"D:\mywork.txt"); if (fi.Exists) { //如果文件存在 try { fi.MoveTo(@"F:\mytest\work1.txt"); } catch (Exception ex) { Response.Write("出现错误,原因是:" + ex.Message); } }else fi.Create();
12.2.6 复制文件
复制文件是指将指定文件中的内容复制到另一个文件中。File类的Copy()方法将现有文件复制到新文件,但是不允许覆盖同名的文件。开发者在使用时需要传入两个参数:第一个参数是要复制的文件;第二个参数是目录文件的路径,它不能是一个目录或现有文件。语法形式如下。
void File.Copy(string sourceFileName, string destFileName)
FileInfo类的CopyTo()方法将现有文件复制到新文件,不允许覆盖现有文件。开发者在使用CopyTo()方法时需要传入一个参数,该参数表示要复制到新文件的名称。形式如下。
FileInfo FileInfo.CopyTo(string destFileName)
【范例10】
如果F磁盘下mytest文件夹中的work1.txt文件存在,则调用CopyTo()方法移动文件,否则创建文件。代码如下。
FileInfo fi = new FileInfo(@"F:\mytest\work1.txt"); if (fi.Exists) { //如果文件存在 try { fi.CopyTo(@"D:\work1.txt"); } catch (Exception ex) { Response.Write("出现错误,原因是:" + ex.Message); } } else fi.Create();
共有条评论 网友评论