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()); } }
输出是最好的输入。把学习的内容输出出来,加深记忆;