File类
File类是位于java.io包中,该类用于表示本机环境中个一个文件或者一个目录对象,File中提供了一些用于操作文件 或者目录的方法,比如文件或目录创建,删除文件或者目录,信息显示等操作。
public class FileDemo {
public static void main(String[] args) throws IOException {
//获取与系统有关的路径分隔符
System.out.println(File.pathSeparator);//String
System.out.println(File.pathSeparatorChar);//char
//获取与系统有关的目录分隔符(windows:\或/ Linux:/)
System.out.println(File.separator);
//根据提供的文件路径获取File对象
File f = new File("d:\\log.txt"); // d:\log.txt
//根据提供的父路径以及子路径(文件)构建一个File对象
File f2 = new File("d:\\javacode","HelloWorld.java");
// d:\javacode\HelloWorld.java
//根据提供的File对象(父目录)以及子路径构建一个新的File对象
File f3 = new File(new File("d:\\javacode"),"doc");
// d:\javacode\doc
File f4 = new File("d:/javacode/a.txt");
//比较两个路径表示的资源顺序(文件名在字典中的间隔数)
System.out.println(f.compareTo(f2));
//创建当前File类所表示的文件(标准文件:非目录),前提是当前标准文件创建
时父目录必须存在
System.out.println("文件创建结果:"+f4.createNewFile());
//创建目录
f4 = new File("d:/myproject/test/demo");
System.out.println("创建一级目录:"+f4.mkdir());
System.out.println("创建多级目录:"+f4.mkdirs());
//创建临时文件
File temp = File.createTempFile("myfile", ".temp", f4);
System.out.println(temp);
f4 = new File("D:\\myproject\\test\\demo\\myfile6646803415562490018temp");
//删除文件
System.out.println("文件删除:"+f4.delete());
f4 = new File("d:/javacode/a.txt");
//当虚拟机终止时删除文件
f4.deleteOnExit();
//如果不存在,则先创建test目录再创建Demo.java文件
//获取指定File对象的绝对路径
System.out.println(f2.getAbsolutePath());
//如果获取文件名称???
System.out.println(f2.getName());
System.out.println(f2.getParent());
//获取当前文件所在磁盘的总空间
System.out.println(f2.getTotalSpace());
//判断指定的File对象是否是目录(或标准文件)
System.out.println("当前File对象是否是目录:"+f2.isDirectory());
System.out.println("当前File对象是否是标准文件:"+f2.isFile());
//判断目标File对象是否是隐藏的
System.out.println(new
File("D:\\javacode\\test\\Demo.java").isHidden());
//获取目标File对象所表示的文件或者目录的后一次修改时间(毫秒)
System.out.println(f2.lastModified());
//获取目标File对象所表示的标准
System.out.println(f3.length());
}
}
File类实例:
//判断d盘下javacode目录中是否存在一个test子目录,如果存在则直接在该test目录中创建一个子文件
Demo.java public class Demo1 {
public static void main(String[] args) throws IOException {
File f = new File("d:/javacode/test");
//当指定目录存在时,创建目录
if(!f.exists()){
f.mkdirs();
}
//基于上述目录构建新的File对象
f = new File(f,"Demo.java");
//当File指定的文件不存在时则创建
if(!f.exists()){
f.createNewFile();
}
}
}
目录遍历:
public class FileDemo2 {
public static void main(String[] args) {
File f = new File("d:/javacode/doc");
//获取当前File对象所表示的目录中的所有子文件对象(数组)
File[] files = f.listFiles();
for (File file : files) {
System.out.println(file.getAbsolutePath());
}
}
}
文件过滤
1.创建文件过滤器
/**
* 自定义文件过滤器,可以过滤指定后缀的文件
*
**/
public class MyFileFilter implements FileFilter{
private String suffix;
public MyFileFilter(String suffix) {
super();
this.suffix = suffix;
}
@Override
public boolean accept(File f) {
String name = f.getName().toLowerCase();
return name.endsWith(suffix); } }
2.实现文件过滤
public class FileDemo3 {
// static class MyFilter implements FileFilter{
// @Override
// public boolean accept(File f) {
// return f.getName().toLowerCase().endsWith(".mp3");
// }
// }
public static void main(String[] args) {
File f = new File("D:\\素材\\音乐\\music素材");
//使用匿名内部类 /
/ File[] files = f.listFiles(new FileFilter() {
// @Override
// public boolean accept(File file) {
// return file.getName().toLowerCase().endsWith(".mp3");
// }
// });
//使用Lambda表达式
// File[] files = f.listFiles((f2)‐>f2.getName().toLowerCase().endsWith(".mp3"));
File[] files = f.listFiles(new MyFileFilter(".jpg"));
for (File file : files) {
System.out.println(file.getName()); } } }