Java——File类

一,File类的概述和构造方法

A:file类的概述

file类可以理解成一个路径

文件夹或者是文件夹路径

路径分为绝对路径和相对路径

绝对路径是一个固定的路径,从盘符开始这里的G:\TIM  就是一个绝对路径,是一个固定的路径

这里的G:\TIM 就是一个绝对路径,是一个固定的路径

相对路径是相对于某个位置而言的

在eclipse下是指当前项目这里的 xxx.txt就是一个相对路径
这里的 xxx.txt 就是一个相对路径

在DOS下指的是当前路径
这里的C:\Administrator 就是一个当前路径
这里的C:\Administrator 就是一个当前路径

B:file类的构造方法

file类可以理解成一个路径

  • File(String pathname):根据一个路径得到File对象
  • File(String parent,String chile):根据一个目录和一个子文件/目录得到File对象
  • File(File parent,String child):根据一个父类File对象和一个子文件/目录得到File对象

这里写图片描述
这里写图片描述

由图可得:
1,G:\TIM\思You.docx 是存在的
2,xxx.txt也是存在
3,yyy.txt是不存在的

代码实现:

package com.yy.file;

import java.io.File;

public class Demo1_File {

    public static void main(String[] args) {
        demo1();
        demo2();
        demo3();
    }

    private static void demo3() {
        /*File(File parent,String child):根据一个父类File对象和一个子文件/目录得到File对象*/
        File parent = new File("G:\\TIM");
        String child = "思You.docx";
        File file = new File(parent,child);
        System.out.println(file.exists());
        System.out.println(parent.exists());//(父级路径)是File对象,可以使用File里面的内容
    }

    private static void demo2() {
        /*File(String parent,String chile):根据一个目录和一个子文件/目录得到File对象*/
        String parent = "G:\\TIM";          //(父级路径)代表字符串,只能判断字符串中的内容,不能使用File里面的内容
        String child = "思You.docx";         //(子级路径)
        File file = new File(parent,child);
        System.out.println(file.exists()); //判断路径是否是否存在
    }

    private static void demo1() {
        /*File(String pathname):根据一个路径得到File对象*/
        File file = new File("G:\\TIM\\思You.docx");     //代表一个文件的路径 一个'/'表示转译,两个'//'表示该目录下
        System.out.println(file.exists());  //  绝对路径:(判断是否存在)存在,返回true  不存在,返回false

        File file2 = new File("xxx.txt");       //xxx.txt存在,返回true
        System.out.println(file2.exists()); //  相对路径:(判断是否存在)存在,返回true  

        File file3 = new File("yyy.txt");       //yyy.txt不存在,返回false
        System.out.println(file3.exists()); //  相对路径:(判断是否存在)不存在,返回false
    }

}

二,File类的创建功能

创建功能

  • public boolean createNewFile():创建文件,如果存在这样的文件,就不创建了
  • public boolean mkdir():创建文件夹,如果存在这样的文件夹,就不创建了
  • public boolean mkdir():创建多级文件夹,如果父文件夹不存在,会帮你创建出来

代码实现:

package com.yy.file;

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

public class Demo2_FileMethod {

    public static void main(String[] args) throws IOException {
        demo1();
        demo2();
        demo3();
    }

    private static void demo3() {
        /*public boolean mkdir():创建多级文件夹,如果父文件夹不存在,会帮你创建出来*/
        File dir3 = new File("ccc\\ddd");
        System.out.println(dir3.mkdirs());//创建多级目录(创建多级文件夹)
    }

    private static void demo2() {
        /*public boolean mkdir():创建文件夹,如果存在这样的文件夹,就不创建了*/
        File dir1 = new File("aaa");//创建文件夹,如果父文件夹存在,不创建,并返回false;如果父文件夹不存在,创建,并返回true
        System.out.println(dir1.mkdir());

        File dir2 = new File("bbb.txt");//这样写是可以的,创建的是文件夹,只是文件夹的名称为:bbb.txt而已,文件夹也是可以有后缀的
        System.out.println(dir2.mkdir());
    }

    private static void demo1() throws IOException {
        /*public boolean createNewFile():创建文件,如果存在这样的文件,就不创建了*/
        File file = new File("wsq.txt");
        System.out.println(file.createNewFile());   //如果没有就创建,返回true

        File file2 = new File("zzz");
        System.out.println(file2.createNewFile());  //如果有就不创建了,返回false
    }

}

二,File类的重命名和删除功能

A:重命名和删除功能

  • public boolean renameTo(File dest):把文件重命名为指定的文件路径
  • public boolean delete():删除文件或文件夹

B:重命名注意事项

  • 如果路径名相同,就是改名
  • 如果路径名不同,就是改名并剪切

C:删除注意事项

  • Java中的删除不走回收站
  • 要删除一个文件夹,请注意该文件夹内不能包含文件或者文件夹

这里写图片描述

代码实现:

package com.yy.file;

import java.io.File;

public class Demo3_Method {

    public static void main(String[] args) {
        demo1();
        demo2();
    }

    private static void demo2() {
        File file1 = new File("yy.txt");
        System.out.println(file1.delete());//删除yy.txt文件(删除时,不走回收站的,也就是说 会永久彻底删除)

        File file2 = new File("E:\\wsq.txt");
        System.out.println(file2.delete());

        File file3 = new File("zzz");
        System.out.println(file3.delete());
    }

    private static void demo1() {
        File file1 = new File("yy.txt");
        File file2 = new File("E:\\wsq.txt");
        System.out.println(file1.renameTo(file2));//把文件yy.txt重命名为E盘下wsq.txt
    }
    }

程序运行之后:
这里写图片描述
会将yy.txt转化成G:\TIM下的wsq.txt
会将yy.txt转化成G:\TIM下的wsq.txt

三,File类的判断功能

判断功能

  • public boolean isDirectory():判断是否是目录,是 返回true 否 返回 false
  • public boolean isFile():判断是否是文件,是 返回true 否 返回 false
  • public boolean exists():判断是否存在,是 返回true 否 返回 false
  • public boolean canRead():判断是否可读,是 返回true 否 返回 false
  • public boolean isHidden():判断是否隐藏,是 返回true 否 返回 false

这里写图片描述
由图可知:
ccc是一个文件夹
zzz是一个文件
aaa.txt是一个文件

将aaa.txt设置为隐藏
将aaa.txt设置为隐藏

代码实现:

package com.yy.file;

import java.io.File;

public class Demo4_FileMethod {

    public static void main(String[] args) {
        demo1();
        demo2();

    }

    private static void demo2() {
        File file = new File("zzz");
        file.setReadable(false);
        System.out.println(file.canRead());         //Windows 系统认为所以的文件都是可读的

        file.setWritable(true);
        System.out.println(file.canWrite());        //Windows 系统可以设置为不可写

        File file2 = new File("aaa.txt");
        System.out.println(file2.isHidden());       //判断是否是隐藏文件
        System.out.println(file.isHidden());
    }

    private static void demo1() {
        File dir1 = new File("ccc");            //这里的ccc是一个文件夹
        System.out.println(dir1.isDirectory());//判断是否是文件夹      ccc  是一个文件夹,所以返回true

        File dir2 = new File("zzz");            //这里的zzz是一个文件
        System.out.println(dir2.isDirectory());//判断是否是文件夹      zzz  是一个文件,所以返回false

        System.out.println(dir1.isFile());      //判断是否是文件      ccc  是一个文件夹,所以返回false
        System.out.println(dir2.isFile());      //判断是否是文件      zzz  是一个文件,所以返回true

        System.out.println(dir1.exists());      //判断是否存在,存在返回true,不存在返回false
        System.out.println(dir2.exists());      //判断是否存在,存在返回true,不存在返回false
    }

}

四,File类的获取功能

  • public String getAbsolutepath():’获取绝对路径
  • public String getPath():获取路径
  • public String getName():获取名称
  • public long length():获取长度、字节数
  • public long lastModified():获取最后一次的修改时间(毫秒值)
  • public String [] list():获取指定目录下的所有文件或者文件夹名称数组
  • public File [] listFiles():获取指定目录下的所有文件或者文件夹的File数组

这里写图片描述
这里写图片描述
这里写图片描述

代码实现:

package com.yy.file;

import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Demo5_FileMethod {
/**
 * public String getAbsolutepath():’获取绝对路径
 * public String getPath():获取路径
 * public String getName():获取名称
 * public long length():获取长度、字节数
 * public long lastModified():获取最后一次的修改时间(毫秒值)
 * public String [] list():获取指定目录下的所有文件或者文件夹名称数组
 * public File [] listFiles():获取指定目录下的所有文件或者文件夹的File数组
 * */
    public static void main(String[] args) {
        demo1();

        File dir = new File("G:/TIM");          //获取名称
        String [] arr = dir.list();                 
        for (String string : arr) {
            System.out.println(string);
        }
        System.out.println();


        File [] subFiles = dir.listFiles();     //获取全路径(每一个file对象)  
        for (File file : subFiles) {
            System.out.println(file);           //重写了Object类中的toString()方法
        }
        System.out.println();
    }

private static void demo1() {
    File file1 = new File("ccc.txt");   //相对路径
    File file2 = new File("E:\\eclipse_win64\\新建文件夹\\day19\\ccc.txt");  //绝对路径


    System.out.println(file1.getAbsolutePath());            //获取绝对路径
    System.out.println(file2.getAbsolutePath());            //获取绝对路径
    System.out.println();


    System.out.println(file1.getPath());                    //获取构造方法里面的路径,传的是啥,返回啥
    System.out.println(file2.getPath());                    //获取构造方法里面的路径,传的是啥,返回啥
    System.out.println();


    System.out.println(file1.getName());                    //获取文件或者是文件夹的名称
    System.out.println(file2.getName());                    //获取文件或者是文件夹的名称
    System.out.println();



    System.out.println(file1.length());                     //获取文件或者是文件夹的长度、字节数
    System.out.println(file2.length());                     //获取文件或者是文件夹的长度、字节数
    System.out.println();


    System.out.println(file1.lastModified());               //获取文件最后一次的修改时间(毫秒值)
    System.out.println(file2.lastModified());               //获取文件最后一次的修改时间(毫秒值)
    System.out.println();

    Date wsq = new Date(file1.lastModified());              
    Date yy = new Date(file2.lastModified());
    System.out.println(wsq);                                //获取文件最后一次的修改时间(年月日英文形式)
    System.out.println(yy);                                 //获取文件最后一次的修改时间(年月日英文形式)
    System.out.println();

    SimpleDateFormat qq = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
    System.out.println(qq.format(wsq));                     //获取文件最后一次的修改时间(年月日简易中文形式)
    System.out.println(qq.format(yy));                      //获取文件最后一次的修改时间(年月日简易中文形式)
    System.out.println();

}

}

运行结果如下:
这里写图片描述
这里写图片描述
这里写图片描述

五,File类(输出指定目录下指定后缀的文件名)

  • 问题:判断E盘目录下是否有后缀名为.jpg的文件,如果有,就输出该文件名称

这里写图片描述

代码如下:

package com.yy.test;

import java.io.File;
import java.io.FilenameFilter;

public class Test3 {
/**
 * 判断E盘目录下是否有后缀名为.jpg的文件,如果有,就输出该文件名称
 * */
    public static void main(String[] args) {
        File dir = new File("E:\\");

        /*String [] arr = dir.list();               //获取E盘下所有的文件或者文件夹
        for (String wsq : arr) {
            if(wsq.endsWith(".jpg"));
            System.out.println(wsq);
        }*/


        File [] subFiles = dir.listFiles();         //获取E盘下所有的文件或者文件夹对象
        for (File subFile : subFiles) {
            if(subFile.isFile() && subFile.getName().endsWith(".jpg")){
                System.out.println(subFile);
            }

    }
}

这里写图片描述

六,File类(文件名称过滤器)

代码如下:

package com.yy.test;

import java.io.File;
import java.io.FilenameFilter;

public class Test3 {
    public static void main(String[] args) {
        File dir = new File("E:\\");

        String [] arr = dir.list(new FilenameFilter() {

            @Override
            public boolean accept(File dir, String name) {
//              System.out.println(dir);
//              System.out.println(name);
                File file = new File(dir, name);
                return file.isFile() && file.getName().endsWith(".jpg");
            }
        });

        for (String string : arr) {
            System.out.println(string);
        }   
    }
}

猜你喜欢

转载自blog.csdn.net/qq_41264055/article/details/81127287