Java-File类、Properties属性集合

一、File类

  概念:代表物理盘符中的一个文件或文件夹。

  常用方法:

    createNewFile()//创建一个新文件

    mkdir()//创建一个文件夹(只能创建单级目录) mkdirs()创建多级目录

    Delete()//删除文件或空目录

    Exists()//判断File对象所代表的对象是否存在

    getAbsolutePath()//获取文件的绝对路径

    getName()//获取名字

    getParent()//获取文件/目录所在的目录

    isDirectory()//是否是目录

    isFile()//是否是文件

    length()//获得文件的长度

    listFiles()//列出目录的所有内容

    renameTo()//修改文件名

  FileFilter接口(文件过滤器)

    public interface FileFilter

      boolean accept(File pathname)

  当调用File类中的listFiles()方法时,可以FileFilter接口的实现类来对获取文件进行过滤,只有满足条件的文件才会返回。

  案例:File类的使用 分隔符、文件操作、文件夹操作、FileFilter接口使用

package com.monv.chapter15_2;

import java.io.File;
import java.io.FileFilter;
import java.util.Date;

/**
 * File类的使用
 * (1)分隔符
 * (2)文件操作
 * (3)文件夹操作
 * @author Monv
 *
 */
public class Demo1 {
    public static void main(String[] args) throws Exception {
        separator();
        fileOpe();
        directoryOpe();
    }
    //(1)分隔符
    public static  void separator() {
        System.out.println("路径分隔符:"+File.pathSeparator);
        System.out.println("名称分隔符:"+File.separator);
    }
    //(2)文件操作
    public static void fileOpe() throws Exception{
        //1.创建文件 createNewFile()
        File file = new File("D:\\file.txt");//这个时候还没有创建文件
        //file.exists() 判断文件是否存在 不存在 创建 存在就不再创建了
        if (!file.exists()) {
            Boolean b= file.createNewFile();//在硬盘上创建文件
            System.out.println("创建结果:"+b);
        }
        
        //2.删除文件
        //2.1直接删除
//        System.out.println("删除结果:"+file.delete());
        //2.2使用JVM(虚拟机)退出时删除 
        file.deleteOnExit();
//        Thread.sleep(5000);
        //3.获取文件信息
        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());
        //4.判断
        System.out.println("是否可写:"+file.canWrite());
        System.out.println("是否是文件:"+file.isFile());
        System.out.println("是否隐藏:"+file.isHidden());
    }
    
    //(3)文件夹操作
    public static void directoryOpe() {
        //1.创建文件夹
        File dir = new File("D:\\aaa\\bbb\\ccc");
        if(!dir.exists()) {
            //mkdir();//只能创建单级目录   mkdirs():创建多级目录
            System.out.println("创建结果:"+dir.mkdirs());
        }
        
        //2.删除文件夹
        //2.1直接删除(删除空目录而且是删除最低级目录)
        //System.out.println("删除结果:"+dir.delete());
        //2.2使用JVM删除
        //dir.deleteOnExit();
        //3.获取文件夹信息
        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());
        //4.判断
        System.out.println("是否是文件夹:"+dir.isDirectory());
        System.out.println("是否隐藏:"+dir.isHidden());
        //5.遍历文件夹
        File dir2 = new File("D:\\");
        String[] files = dir2.list();
        System.out.println("-------------------");
        for (String string : files) {
            System.out.println(string);
        }
        
        System.out.println("------FileFilter接口的使用--------");
        //只显示文件类型是.txt的文件
        File[] files2 = dir2.listFiles(new FileFilter() {
            @Override
            public boolean accept(File pathname) {
                if (pathname.getName().endsWith(".txt")) {
                    return true;//满足要求的返回true
                }
                return false;//不满足返回false
            }
        });
        for (File file : files2) {
            System.out.println(file.getName());
        }
    }
}

   案例2:递归遍历文件夹 和 递归删除文件夹

package com.monv.chapter15_2;

import java.io.File;

/**
 * 案例1:递归遍历文件夹
 * 案例2:递归删除文件夹
 * @author Monv
 *
 */
public class Demo2 {
    public static void main(String[] args) {
        listDir(new File("D:\\myfiles"));
        delDir(new File("D:\\myfiles"));
    }
    //递归遍历文件夹
    private static void listDir(File dir) {
        File[] files = dir.listFiles();
        System.out.println(dir.getAbsolutePath());
        if(files!=null&&files.length>0) {
            for (File file : files) {
                if (file.isDirectory()) {//判断是否是文件夹
                    listDir(file);//递归
                }else {
                    System.out.println(file.getAbsolutePath());
                }
            }
        }
    }
    //递归删除文件夹
    private static void delDir(File dir) {
        File[] files = dir.listFiles();
        System.out.println(dir.getAbsolutePath());
        if(files!=null && files.length>0) {
            for (File file : files) {
                if(file.isDirectory()) {//如果是文件夹 接着遍历
                    delDir(file);
                }else {//不是文件夹直接删除
                    System.out.println(file.getAbsolutePath()+"删除:"+file.delete());
                }
            }
        }
        System.out.println(dir.getAbsolutePath()+"删除:"+dir.delete());
    }
}

二、Properties属性集合(线程安全的集合)

  特点:存储属性名和属性值

     属性名和属性值都是字符串类型

     没有泛型

     和流有关

  案例:Properties集合的使用

package com.monv.chapter15_2;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.PrintWriter;
import java.util.Properties;
import java.util.Set;

/**
 * 演示Properties集合的使用
 * @author Monv
 *
 */
public class Demo3 {
    public static void main(String[] args) throws Exception{
        //1.创建集合
        Properties properties = new Properties();
        //2.添加数据
        properties.setProperty("username", "花花");
        properties.setProperty("age", "22");
        System.out.println(properties.toString());
        //3.遍历
        //3.3-------stringPropertyNames()-------
        Set<String> pronames= properties.stringPropertyNames();
        for (String pro : pronames) {
            System.out.println(pro+":"+properties.getProperty(pro));
        }
        //4和流有关的方法
        //4.1--------list方法-----------
        PrintWriter pw = new PrintWriter("D:\\print.txt");
        properties.list(pw);//把数据写到D盘的print文件中
        pw.close();
        //4.2-------store方法 保存--------
        FileOutputStream fos = new FileOutputStream("D:\\store.properties");
        properties.store(fos, "这个是备注");//第二个参数是备注
        fos.close();
        //4.3-------load方法 加载--------
        Properties properties2 = new Properties();
        FileInputStream fis = new FileInputStream("D:\\store.properties");
        properties2.load(fis);
        fis.close();
        System.out.println(properties2.toString());
        
    }
}

 

posted @ 2021-01-29 23:27  改Bug的小魔女  阅读(121)  评论(0编辑  收藏  举报