File类

Posted 天马行空郭

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了File类相关的知识,希望对你有一定的参考价值。

一、构造方法:

File(File parent, String child)
Creates a new File instance from a parent abstract pathname and a child pathname string.
File(String pathname)
Creates a new File instance by converting the given pathname string into an abstract pathname.
File(String parent, String child)
Creates a new File instance from a parent pathname string and a child pathname string.
File(URI uri)
Creates a new File instance by converting the given file: URI into an abstract pathname.

  1)参数里面单个路径:

    /**
     * Creates a new <code>File</code> instance by converting the given
     * pathname string into an abstract pathname.  If the given string is
     * the empty string, then the result is the empty abstract pathname.
     *
     * @param   pathname  A pathname string
     * @throws  NullPointerException
     *          If the <code>pathname</code> argument is <code>null</code>
     */
    public File(String pathname) {
        if (pathname == null) {
            throw new NullPointerException();
        }
        this.path = fs.normalize(pathname);
        this.prefixLength = fs.prefixLength(this.path);
    }

为何叫abstract pathname?
    /*
     * 传入一个绝对/相对路径
* 注意:如果该路径(无论绝对路径好,还是绝对路径也好,如果该路径不存在的话,则是不会创建的,除非写流) */ public static void demo1() { String path = "D:\\\\JAVA\\\\学习视频\\\\01、第一阶段java基础(27天)\\\\day19(异常、file)\\\\day19\\\\day19\\\\video\\\\001_今日内容.avi"; String path02 = "D:\\\\JAVA\\\\学习视频\\\\01、第一阶段java基础(27天)\\\\day19(异常、file)\\\\day19\\\\day19\\\\video\\\\cao.txt"; File file = new File(path); //传入一个绝对路径,所得出的File对象就含有该 abstract pathname File file02 = new File(path02); //传入一个绝对路径,所得出的File对象就含有该 abstract pathname System.out.println(file.exists()); //该绝对路径存在着该文件,所以为true System.out.println(file02.exists()); //该绝对路径不存在着该文件,所以为false File file2 = new File("aaa.txt"); System.out.println(file2.exists()); //该项目下面路径存在着该文件,所以为true File file3 = new File("yyy.txt"); System.out.println(file3.exists()); //该项目下面路径存在着该文件,所以为false }

 2)父级路径、子级路径:

public File(String parent, String child)
Creates a new File instance from a parent pathname string and a child pathname string.

public File(File parent, String child)
Creates a new File instance from a parent abstract pathname and a child pathname string.
private static void demo2() {
    String parent = "D:\\\\JAVA\\\\学习视频\\\\01、第一阶段java基础(27天)\\\\day19(异常、file)\\\\day19\\\\day19\\\\video";
    String child = "001_今日内容.avi";
    File file = new File(parent,child);
    System.out.println(file.exists()); // true
}

private static void demo3() {
    File parent = new File("D:\\\\JAVA\\\\学习视频\\\\01、第一阶段java基础(27天)\\\\day19(异常、file)\\\\day19\\\\day19\\\\video");
    String child = "001_今日内容.avi";
    File file = new File(parent, child);
    System.out.println(file.exists());// true
    System.out.println(parent.exists());// true
}

 从上图可以看出,父级路径既可以是String,也可以是File实例对象,其得到的效果是一样的

 二、一般方法

1)创建文件

public boolean createNewFile() throws IOException
    /***
     * 这个方法是创建文件,注意,无论是“yyy.txt”,还是"zzz",因为是file.createFile(),所以最终结果都是创建一个文件,是文件
     * @throws IOException
     */
    public static void demo1() throws IOException {
        File file = new File("yyy.txt");
        System.out.println(file.createNewFile());            //如果没有就创建,返回true,如果有就不创建了,返回false
        
        File file2 = new File("zzz");
        System.out.println(file2.createNewFile());
    }

2)创建文件夹

    /**
     * Creates the directory named by this abstract pathname.
     *
     * @return  <code>true</code> if and only if the directory was
     *          created; <code>false</code> otherwise*/
    public boolean mkdir() //创建文件夹 如果存在这样的文件夹,就不创建了

public boolean mkdirs() //创建文件夹,如果父文件夹不存在,会帮你创建出来
    /***
     * 这个是创建路径(文件夹)(diractory)的
     */
    private static void demo2() {
        File dir1 = new File("aaa");//创建一个文件名为aaa的文件
        System.out.println(dir1.mkdir());
        
        File dir2 = new File("bbb.txt");    
        System.out.println(dir2.mkdir());//这样写是可以的,文件夹也是可以有后缀的(创建一个文件名为bbb.txt的文件夹)
        
        File dir3 = new File("ccc\\\\ddd");
        System.out.println(dir3.mkdirs());//创建一个文件名问ccc的文件夹,且其子文件夹为ddd,注意,方法里面多了个“s”
    }

 

 3)重命名

public boolean renameTo(File dest)
    /***
     * 情况一:他们的路径都是一样的
     * 如果在该路径 file1 下,有一个文件zzz,那就把文件名zzz改为文件名bbb
     * 注意,如果在该路径file1下,没有该文件zzz,则无法改名,则返回false,如果重写成功则返回true
     */
    private static void demo1() {
        File file1 = new File("zzz");
        File file2 = new File("bbb");
        System.out.println(file1.renameTo(file2));
    }
    /***
     * 情况二:他们的路径不一样
     * 如果在该路径file1下,有该文件,则把该文件剪切到file2路径下,返回true
     * 如果在该路径file1下,没有该文件,则返回false
     * 如果在该路径file1下,有该文件bbb,但是file2路径下也有该文件diao,则无法剪切,返回false
     */
    private static void demo3() {
        File file1 = new File("D:\\\\bbb");
        File file2 = new File("diao");
        System.out.println(file1.renameTo(file2));
    }

 

 4)删除

public boolean delete()
    /***
     * Java中的删除不走回收站。
     * 要删除一个文件夹,请注意该文件夹内不能包含文件或者文件夹(也就是说必须是空的),否则删除失败并且返回false
     * 如果该目录下面有该文件,则成功删除并且返回true,如果没有的话,就返回false
     */
    private static void demo2() {
        File file1 = new File("yyy.txt");
        System.out.println(file1.delete());
    }

 

 5)判断功能

public boolean isDirectory():判断是否是目录
public boolean isFile():判断是否是文件
public boolean exists():判断是否存在
public boolean canRead():判断是否可读
public boolean canWrite():判断是否可写
public boolean isHidden():判断是否隐藏
public boolean setReadable(boolean readable):将其设置为是否可读
public boolean setWritable(boolean writable):将其设置为是否可写
    /***
     * windows系统认为所有的文件都是可读的,无论file.setReadable(boolean)为true还是false
     * 但是linux就不一样了
     * 但是windows系统可以设置为不可写
     */
    private static void demo2() {
        
        File file = new File("aaa.txt");
        
        file.setReadable(false);
        System.out.println(file.canRead());     
                                                    
        file.setWritable(true);
        System.out.println(file.canWrite());             

    }

 

 6)其它

    public static void demo1() throws IOException {
        
        File file1 = new File("ccc.txt");
        file1.createNewFile();
        File file2 = new File("D:\\\\EclipseWorkspace02\\\\day19_File\\\\ccc.txt");
        
        //获取绝对路径
        System.out.println(file1.getAbsolutePath());//(D:\\EclipseWorkspace02\\day19_File\\ccc.txt)
        System.out.println(file2.getAbsolutePath());//(D:\\EclipseWorkspace02\\day19_File\\ccc.txt)
        
        //获取构造方法中当时的路径
        System.out.println(file1.getPath());//ccc.txt
        System.out.println(file2.getPath());//D:\\EclipseWorkspace02\\day19_File\\ccc.txt
        
        //获取文件或者文件的名字
        System.out.println(file1.getName());//ccc.txt
        System.out.println(file2.getName());//ccc.txt
        
        //获取文件长度
        System.out.println(file1.length());
        
        //获取该文件的最后修改时间,返回毫秒值
        Date d = new Date(file1.lastModified());
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
        System.out.println(sdf.format(d));
        
    }

 哈哈,下面的加参数还可以过滤呢

    private static void demo2() {
        
        File dir = new File("D:\\\\JAVA\\\\学习视频\\\\01、第一阶段java基础(27天)\\\\day19\\\\day19\\\\day19\\\\video");
        
        String[] arr = dir.list();//获取当前路径下的所有文件的文件名(是文件名)
        
        File[] subFiles = dir.listFiles();//获取当前路径下的所有文件的File实例(是File对象)
        
    }

 The end!

以上是关于File类的主要内容,如果未能解决你的问题,请参考以下文章

这些 C++ 代码片段有啥作用?

php代码片段: sendFile/videoStream/sendEmail/phpexcel/ffmpeg/zip

[异常解决] Make nRF51 DFU Project Appear "fatal error: uECC.h: No such file or directory"(代码片段

如何通过单击片段内的线性布局从片段类开始新活动?下面是我的代码,但这不起作用

解决go: go.mod file not found in current directory or any parent directory; see ‘go help modules‘(代码片段

pycharm添加Odoo代码片段