File的常用方法
public static void main(String[] args) throws IOException {
File file = new File("C:\\Users\\66496\\eclipse-workspace\\RookieCourse\\2.xls");
System.out.println(file.getName());//名称
System.out.println(file.getPath());//路径
System.out.println(file.getAbsolutePath());//绝对路径
System.out.println(file.getParent());//父路径,如果不存在则为null
System.out.println(file.getParentFile());//父对象
System.out.println(file.exists());//是否存在
System.out.println(file.isFile());//是否是文件
System.out.println(file.isDirectory());//是否是文件夹
System.out.println(file.length());//返回文件的大小,单位字节,文件夹的length为0
//创建文件
File file2 = new File("1.txt");
boolean flag = file2.createNewFile();
System.out.println(flag);//如果文件已存在,则创建失败,返回false
}
创建文件夹
mkdir():确保上级目录存在,不存在则创建失败
mkdirs():上级目录可以不存在,不存在则一同创建(常用)
列出下级名称:list()
public static void main(String[] args) {
File dir = new File("C:\\Users\\66496\\eclipse-workspace\\RookieCourse");
String[] subNames = dir.list();
for (String string : subNames) {
System.out.println(string);
}
}
列出下级File对象:listFiles()
public static void main(String[] args) {
File dir = new File("C:\\Users\\66496\\eclipse-workspace\\RookieCourse");
File[] files = dir.listFiles();
for (File file : files) {
System.out.println(file.getAbsolutePath());
}
}
列出所有盘符(了解):listRoots()
public static void main(String[] args) {
File dir = new File("C:\\Users\\66496\\eclipse-workspace\\RookieCourse");
File[] roots = dir.listRoots();
for (File file : roots) {
System.out.println(file.getAbsolutePath());
}
}
列出下级的所有文件(子孙级)
通过递归来实现:
递归:方法调用自己
递归头:何时结束递归
递归体:重复调用的部分
最简单的一个递归实例:打印1-10的数:
public static void main(String[] args) {
printTen(1);
}
public static void printTen(int n) {
if(n>10) {//递归头:何时结束递归
return;
}
System.out.println(n);
printTen(n+1);//递归体:方法调用自己
}
使用递归打印子孙级目录和文件的名称:
public static void main(String[] args) {
File src = new File("C:\\Users\\66496\\eclipse-workspace\\RookieCourse");
printName(src);
}
public static void printName(File src) {
System.out.println(src.getName());
if(null == src || !src.exists()) {
return;
}else if(src.isDirectory()) {//目录
for(File f:src.listFiles()) {
printName(f);
}
}
}
稍作修改,让打印出的内容按照层级显示
public static void main(String[] args) {
File src = new File("C:\\Users\\66496\\eclipse-workspace\\RookieCourse");
printName(src,0);
}
public static void printName(File src,int deep) {
for(int i=0;i<deep;i++) {
System.out.print("-");
}
System.out.println(src.getName());
if(null == src || !src.exists()) {
return;
}else if(src.isDirectory()) {//目录
for(File f:src.listFiles()) {
printName(f,deep+1);
}
}
}
统计文件夹的大小:
public static void main(String[] args) {
File src = new File("C:\\Users\\66496\\eclipse-workspace\\RookieCourse");
count(src);
System.out.println(len);
}
private static long len=0;
public static void count(File src) {
if(null != src && src.exists()) {
if(src.isFile()) {//大小
len+=src.length();
}else {//子孙级
for(File f:src.listFiles()) {
count(f);
}
}
}
}