Java File类

File类

  • File类:代表物理盘符中的一个文件或者文件夹
  • 方法:
    • createNewFile():创建一个新文件
    • mkdir():创建一个新目录
    • delete():删除文件或空目录
    • exists():判断File对象所对象所代表的对象是否存在
    • getAbsolutePath():/获取文件的绝对路径
    • getName ():取得名字
    • getParent ():获取文件/目录所在的目录
    • isDirectory():是否是目录
    • isFile():是否是文件
    • length():获得文件的长度
    • listFiles():列出目录中的所有内容
    • renameTo():修改文件名为

分隔符

public static void separator(){
    System.out.println("路径分隔符"+ File.pathSeparator);
    System.out.println("名称分隔符"+ File.separator);
}

文件操作

创建文件

  • 对文件对象进行打印时,打印的为创建时的路径
  • 使用 createNewFile()创建文件时,如果文件已存在不再创建文件,返回false
File file = new File("F:\\file.txt");
System.out.println(file.toString());//打印该路径,创建的对象可能存在可能不存在
//判断文件是否存在,文件不存在进行创建文件
if(!file.exists()){
    boolean b = file.createNewFile();//创建文件,多次运行返回false,因为文件已经存在,不再创建
    System.out.println("创建结果为:"+b);
}

删除文件

  • 直接删除
System.out.println("删除结果为:"+file.delete());
  • JVM退出时删除
file.deleteOnExit();
Thread.sleep(5000);//休眠五秒

获取文件信息

System.out.println("获取文件的绝对路径:"+file.getAbsolutePath());
System.out.println("获取路径:"+file.getPath());//输出的为创建对象时写入的路径
System.out.println("获取文件名称:"+file.getName());
System.out.println("获取父目录:"+file.getParent());
System.out.println("获取文件长度:"+file.length());
System.out.println("获取文件的最后修改时间:"+new Date(file.lastModified()).toLocaleString());//将获得的时间转为Date类型

判断

System.out.println("是否可写:"+file.canWrite());
System.out.println("是否是文件:"+file.isFile());
System.out.println("是否隐藏:"+file.isHidden());

文件夹操作

创建文件夹

  • mkdir():只能创建单级目录
  • mkdirs():可以创建多级目录
File dir = new File("F:\\test\\a");
System.out.println(dir.toString());
if(!dir.exists()){
    //dir.mkdir();//只能创建单级目录
    System.out.println("创建结果为:"+dir.mkdirs());//可以创建多级目录
}

删除文件夹

  • 直接删除:删除最底层目录,该目录必须是空目录
System.out.println("删除结果:"+dir.delete());
  • JVM删除
dir.deleteOnExit();
Thread.sleep(5000);

获取文件夹信息

System.out.println("获取绝对路径:"+dir.getAbsolutePath());
System.out.println("获取路径:"+dir.getPath());//输出的为创建对象时写入的路径
System.out.println("获取文件夹名称:"+dir.getName());
System.out.println("获取父目录:"+dir.getParent());
System.out.println("获取文件夹的最后修改时间:"+new Date(dir.lastModified()).toLocaleString());

判断

System.out.println("是否是文件夹:"+dir.isDirectory());
System.out.println("是否隐藏:"+dir.isHidden());

遍历文件夹

  • list():返回String[],返回文件名称
  • listFiles():返回Files[],返回该路径下所有文件/文件夹的绝对路径
File dir2 = new File("F:\\java笔记");
String[] files = dir2.list();
//dir2.listFiles();
System.out.println("===========================");
for (String s : files) {
    System.out.println(s);
}

使用 listFiles()遍历

File[] f = dir2.listFiles();
System.out.println("===========================");
for (File file : f) {
    System.out.println(file.toString());
}

FileFilter接口

  • public interface FileFIlter
    • boolean accept(File pathname)
  • 调用File类中的 listFiles()方法时,支持传入FileFilter接口实现类,对获取文件进行过滤,满足条件的才可返回
File[] f2 = dir2.listFiles(new FileFilter() {
    @Override
    public boolean accept(File pathname) {
        if(pathname.getName().endsWith(".png")){
            return true;
        }
        return false;
    }
});
for (File file : f2) {
    System.out.println(file.getName());
}

递归遍历文件夹

public static void listDir(File dir) throws Exception{
    File[] files = dir.listFiles();
    //如果文件夹不为空,文件长度大于0
    if(files!=null && files.length>0){
        for (File file : files) {
            //如果是文件夹
            if(file.isDirectory()){
                listDir(file);//递归
            }else{
                System.out.println(file.getAbsoluteFile());
            }
        }
    }
}

递归删除文件夹

public static void deleteDir(File dir) throws Exception{
    File[] files = dir.listFiles();
    //如果文件夹不为空,文件长度大于0
    if(files!=null && files.length>0){
        for (File file : files) {
            if(file.isDirectory()){
                deleteDir(file);
            }else{
                //删除文件
                System.out.println(file.getAbsoluteFile()+"删除:"+file.delete());
            }
        }
    }
    System.out.println(dir.getAbsoluteFile()+"删除"+dir.delete());
}

Properties属性集合

  • Properties:属性集合
  • 特点:
    • 存储属性名和属性值
    • 属性名和属性值都是字符串类型
    • 没有泛型(确定是字符串)
    • 和流有关

创建集合

Properties properties = new Properties();

添加数据

properties.setProperty("name","A1");
properties.setProperty("age","20");
System.out.println(properties.toString());

遍历

Set<String> proNames = properties.stringPropertyNames();
for (String pro : proNames) {
    System.out.println(pro+"="+properties.getProperty(pro));
}

流相关方法

  • list():写文件,有默认注释(不知道能不能修改)
PrintWriter printWriter = new PrintWriter("F:\\print.txt");
properties.list(printWriter);
printWriter.close();
  • store():写文件,.properties中不允许出现中文,“注释”以转码形式存在
FileOutputStream fileOutputStream = new FileOutputStream("F:\\store.properties");
properties.store(fileOutputStream,"注释");
fileOutputStream.close();
  • load():加载文件中的内容
Properties properties2 = new Properties();
FileInputStream fileInputStream = new FileInputStream("F:\\store.properties");
properties2.load(fileInputStream);
fileInputStream.close();
posted @ 2022-03-29 17:27  chachan53  阅读(36)  评论(0编辑  收藏  举报