当前位置: 首页 > 文章教程  > 计算机与互联网 > 网络编程

12.2文件操作

8/31/2020 9:19:23 PM 人评论

12.2文件操作

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();

相关教程

共有条评论 网友评论

验证码: 看不清楚?