1. java.io.File类
java.io.File类用于表示文件(目录)
File类只用于表示文件(目录)的信息(名称,大小等),不能用于表示文件内容的访问
public static void main(String[] args){
//使用双斜杠,因为有转义字符
File file1 = new File("E:\\FileDemo");
System.out.println(file1.exists());
if(!file1.exists()){
file1.mkdir();//创建一级目录 file.mkdirs()创建多级目录
}
System.out.println("是否是目录"+file1.isDirectory());
System.out.println("是否是文件"+file1.isFile());
File file2 = new File("E:\\FileDemo\\1.txt");
System.out.println(file2.exists());
if(!file2.exists()){
try{
file2.createNewFile();
}catch(Exception e){
e.printStackTrace();
}
}
System.out.println("是否是目录"+file2.isDirectory());
System.out.println("是否是文件"+file2.isFile());
//常用的File对象的API
System.out.println(file1);//直接显示file.toString()的内容 E:\\FileDemo
System.out.println(file1.getName());//FileDemo
System.out.println(file2.getName());//1.txt
System.out.println(file2.getParent());//E:\\FileDemo
}
ps:
- mkdir()创建的是目录,即使路径上带着后缀名,最后也是文件夹。例如
File file2 = new File("E:\\FileDemo\\1.txt")
,也是生成文件名为file.txt
的文件夹,而不是 txt 文件。 - createNewFile() 用来创建文件
2. File文件目录的遍历操作
package com.cn;
import java.io.File;
import java.io.IOException;
//列出File一些常用操作,比如过滤,遍历等操作
public class FileUtils {
public static void main(String[] args) throws IOException {
File dir= new File("E:\\");
if(!dir.exists()){
throw new IllegalArgumentException("目录" +dir+ "不存在");
}
if (!dir.isDirectory()){
throw new IllegalArgumentException(dir+ "不是目录");
}
listDirectory1();
listDirectory2();
listDirectory3();
}
2.1 显示该文件夹下一层的所有目录名,包括文件,压缩包的名字
public static void listDirectory1(File dir) throws IOException{
String[] filesNames =dir.list();//返回的是字符串数组
for (String string:filesNames){
System.out.println(string);
}
}
结果:
1.rar
2.mp3
3.txt
file
2.2 如果要遍历子目录下的内容,就需要构造成File对象做递归操作,File提供了直接返回
public static void listDirectory2(File dir) throws IOException{
File[] files = dir.listFiles();
//显示该文件夹下一层的所有目录完整路径
for (File file:files){
System.out.println(file);
}
}
结果:
E:\FileDemo\1.rar
E:\FileDemo\2.mp3
E:\FileDemo\3.txt
E:\FileDemo\file
2.3 显示该目录下所有的子目录中的文件,使用递归
public static void listDirectory3(File dir) throws IOException{
File[] files = dir.listFiles();
//只显示文件,不显示目录
if(files!=null && files.length>0){
for (File file:files){
if(file.isDirectory()){
listDirectory3(file);
}else{
System.out.println(file);
}
}
}
}
结果:
E:\FileDemo\1.rar
E:\FileDemo\2.mp3
E:\FileDemo\3.txt
E:\FileDemo\file.txt