Java中File之我见

@我是金子
欢迎批评指正

File

最近重新系统的学习了JavaSE。今天先来简单分享一下自己对File的一个理解。

File类简介

1.File类其实就是对文件或者目录名的一个抽象表示。
2.何为抽象表示?
可以分两点解释:①就是说文件或者目录是可以通过File封装成对象的。
②对于File而言,封装的并不是一个真正存在的文件,仅仅是一个路径名而已。这个被封装起来的文件或者目录,它可以存在,也可以不存在。将来我们是要通过File类中的具体方法进行操作,将这个路径名称转换成具体存在的文件或者文件夹。

File的构造方法(指向一个文件)

1.File(String name):通过指定路径名字符串转换为抽象路径来创建一个File实例。
2.File(String parent,String child):从父路径名字和子路径名字符串创建新的File实例。
3.File(File parent,String child):从父抽象路径名和子路径名字符串创建新的File实例。

下面对以上三种构造方法依次介绍:

package com.zx.demo01;
import java.io.File;
/**
 * File:文件和目录路径的抽象表示
 *  ①文件和目录是可以通过File封装成对象的
 *  ②File而言,它封装的并不是一个真正存在的文件,仅仅是一个路径名而已,它可以是存在的,也可以不存在,将来要通过具体的操作来将路径内容转换成具体存在的
 *
 *  构造方法(指向一个文件):
 *      File(String pathname):通过指定的路径名字符串转换为抽象路径来创建新的File实例
 *      File(String parent,String child):从父路径名字和子路径名字字符串创建新的File实体
 *      File(File parent,String child):从父抽象路径名和子路经字符串创建新的File实例
 */
public class FileDemo01 {
    public static void main(String[] args) {
        //File(String pathname):通过指定的路径名字符串转换为抽象路径来创建新的File实例
        File f1 = new File("D:\\zxTest\\java.txt");
        System.out.println("f1:----"+f1);//file类重写了tostring方法
        // File(String parent,String child):从父路径名字和子路径名字字符串创建新的File实体
        File f2 = new File("D:\\zxTest","java2.txt");
        System.out.println("f2:----"+f2);
        //File(File parent,String child):从父抽象路径名和子路经字符串创建新的File实例
        File f = new File("D:\\zxTest");
        File f3 = new File(f,"java3.txt");
        System.out.println("f3:----"+f3);
    }
}


执行结果如下:
在这里插入图片描述

File类的创建功能

1.public boolean createNewFile():当具有该名称的文件不存在时,创建一个由该抽象路径名的心得空的新空文件夹
2.public boolean mkdir():创建由此抽象路径命名的目录
3.public boolean mkdirs():创建多级目录
注意:

  •      如果不存在,创建文件,返回TRUE
    
  •      如果已存在,不创建,返回FALSE
    
  •      即使是一个目录、一个文件,如果重名了,也是存在,就不会重新创建了
    
package com.zx.demo01;
import java.io.File;
import java.io.IOException;

/**
 * File类的创建功能
 *    public boolean createNewFile():当具有该名称的文件不存在时,创建一个由该抽象路径名的心得空的新空文件夹
 *          如果不存在,创建文件,返回TRUE
 *          如果存在,不创建,返回FALSE
 *          即使是一个目录、一个文件,如果重名了,也是存在,就不会重新创建了
 *    public boolean mkdir():创建由此抽象路径命名的目录
 *    public boolean mkdirs():创建多级目录
 */
public class FileDemo02 {
    public static void main(String[] args) throws IOException {
        //需求1.在D:\\zxTest目录下创建一个文件Java.txt
        File f1 = new File("D:\\zxTest\\java.txt");
        boolean newFile = f1.createNewFile();
        System.out.println(newFile);
        //需求2:在D:\\zxTest目录下创建一个文件夹Javase
        File f2= new File("D:\\zxTest\\javaSE");
        boolean mkdir = f2.mkdir();
        System.out.println(mkdir);
        //3.在D:\\zxTest目录下创建多级目录JavaWEB\\HTML
        File f3 = new File("D:\\zxTest\\javaWEB\\HTML");
        boolean mkdirs = f3.mkdirs();
        System.out.println(mkdirs);
    }
}

可以执行以下看一下各个方法的返回值情况。同时本地也会有相应的目录和文件创建。

File类的获取和判断功能

  • public boolean isDirectory()判断抽象路径名表示的file是否是目录
  • public boolean isFile()测试此抽象路径名表示的file是否为文件
  • public boolean exits()判断是否存在
  • public String getAbsolutePath()返回此抽象路径名的绝对路径名字符串
  • public String getPath()将此抽象路径名表示的文件或目录
  • public String getName()返回此抽象file表示的文件或者目录名称
  • public String[] list()返回此抽象路径名表示的目录中文件和目录的名称字符串数组
  • public File[] listFiles()返回此抽象路径名表示的目录文件中的文件和目录的file对象数组
package com.zx.demo01;

import java.io.File;

/**
 * file类判断和获取功能
 *  方法名
 *  public boolean isDirectory()判断抽象路径名表示的file是否是目录
 *  public boolean isFile()测试此抽象路径名表示的file是否为文件
 *  public boolean exits()判断是否存在
 *  public String getAbsolutePath()返回此抽象路径名的绝对路径名字符串
 *  public String getPath()将此抽象路径名表示的文件或目录
 *  public String getName()返回此抽象file表示的文件或者目录名称
 *  public String[] list()返回此抽象路径名表示的目录中文件和目录的名称字符串数组
 *  public File[] listFiles()返回此抽象路径名表示的目录文件中的文件和目录的file对象数组
 */
public class FileDemo03 {
    public static void main(String[] args) {
        File f = new File("zxTest\\java.txt");
        boolean directory = f.isDirectory();
        boolean file = f.isFile();
        boolean exists = f.exists();
        File absoluteFile = f.getAbsoluteFile();
        String absolutePath = f.getAbsolutePath();
        System.out.println(absoluteFile);
        System.out.println(absolutePath);
        System.out.println(f.getPath());
        System.out.println(f.getParent());
        System.out.println(f.getName());
        System.out.println("---------------");
        File f1 = new File("D:\\zxTest");
        String[] list = f1.list();
        for (String str:list){
            System.out.println(str);
        }
        System.out.println("---------");
        File[] files = f1.listFiles();
        for (File fn:files){
            System.out.println(fn.getName());
            if (fn.isFile()){
                System.out.println("--------");
                System.out.println(fn.getName());
            }
        }
        System.out.println("---------");
        for (File fs :files){
            System.out.println(fs);

        }

    }
}

File类的删除

  • public boolean delete():删除文件或者目录
    
  • 绝对路径和相对路径:
  •  绝对路径:完整的路径名,不需要其他任何信息就可以定位它所表示的文件
    
  •  相对路径:必须使用取自其他路径名的信息进行解释。
    
package com.zx.demo01;

import java.io.File;
import java.io.IOException;

/**
 * file类的删除功能
 *     public boolean delete():删除文件或者目录
 * 绝对路径和相对路径:
 *      绝对路径:完整的路径名,不需要其他任何信息就可以定位它所表示的文件
 *      相对路径:必须使用取自其他路径名的信息进行解释。
 */
public class FileDemo04 {
    public static void main(String[] args) throws IOException {
        File f = new File("D:\\zxTest\\java.txt");//绝对路径
        File f1 = new File("java.txt");//如果不标注创建文件到哪里,会创建在和项目同级下;
        File f2 = new File("MyFile\\java.txt");//相对路径//创建在了MyFile模块
        File f3 = new File("aaa\\java.txt");//java.io.IOException: 系统找不到指定的路径。
        boolean newFile = f1.createNewFile();
        boolean newFile1 = f2.createNewFile();
//        boolean newFile2 = f3.createNewFile();
        System.out.println(newFile);
        System.out.println(newFile1);
//        System.out.println(newFile2);
        boolean delete = f1.delete();
        System.out.println(delete);
        System.out.println("==============");
        //删除当前目录下的文件
        File f4 = new File("newDir");
        boolean mkdir = f4.mkdir();
        System.out.println(mkdir);
        File f5 = new File(f4,"java.txt");
        boolean newFile2 = f5.createNewFile();
        System.out.println(newFile2);
        boolean delete1 = f4.delete();
        System.out.println(delete1);//目录下有内容,不能直接删除,不报错,但是没有删除效果
        //需要先删除里面的内容
        boolean delete2 = f5.delete();
        System.out.println(delete2);

    }
}

总结

File
1.在java.io下,使用时需要导包

2.File:文件和目录名的抽象表示
①文件和目录是可以通过File封装成对象的
②对于file而言,封装的并不是一个真正存在的文件,仅仅是一个路径名而已。
它可以是存在的,也可以是不存在的。
将来是要通过具体的操作吧这个路径的内容转换为具体存在的。

3.构造方法(指向一个文件):

  • File(String pathname):通过指定的路径名字符串转换为抽象路径来创建新的File实例
  • File(String parent,String child):从父路径名字和子路径名字字符串创建新的File实体
  • File(File parent,String child):从父抽象路径名和子路经字符串创建新的File实例

4.File类的创建功能

  • public boolean createNewFile():当具有该名称的文件不存在时,创建一个由该抽象路径名的心得空的新空文件夹
  •  如果不存在,创建文件,返回TRUE
    
  •  如果存在,不创建,返回FALSE
    
  •  即使是一个目录、一个文件,如果重名了,也是存在,就不会重新创建了
    
  • public boolean mkdir():创建由此抽象路径命名的目录
  • public boolean mkdirs():创建多级目录

5.file类判断和获取功能

  • 方法名
  • public boolean isDirectory()判断抽象路径名表示的file是否是目录
  • public boolean isFile()测试此抽象路径名表示的file是否为文件
  • public boolean exits()判断是否存在
  • public String getAbsolutePath()返回此抽象路径名的绝对路径名字符串
  • public String getPath()将此抽象路径名表示的文件或目录
  • public String getName()返回此抽象file表示的文件或者目录名称
  • public String[] list()返回此抽象路径名表示的目录中文件和目录的名称字符串数组
  • public File[] listFiles()返回此抽象路径名表示的目录文件中的文件和目录的file对象数组

6.相对路径和绝对路径:
绝对路径:完整路径,不需要其他任何信息就可以定位文件或文件夹的所在位置。
相对路径:必须使用取自其他路径名的信息进行解释,如果其他路径名不存在,那么会编译通过,运行报错。

7.File的删除功能:
File f = new File(“路径”);
f.createNewFile();
f.delete();
注意:如果要删除目录,如果目录下有内容,应该先删除目录下的内容,否则编译通过,执行通过,但是返回FALSE,删除不了。
拜拜~

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值