File的创建方法
File有三种创建方法,其根本都是将字符串传递给File类用来创建File类型的对象
第一种直接传入字符串创建File对象
下列就为直接将文件地址当作一个字符串直接传入File类创建对象
java
//文件的创建
File f = new File("D:\\Test\\aTest.txt");
System.out.println(f);
第二种将父文件夹和本身分割开,再拼接创建File对象
java
//文件的拼接创建,格式为在创建文件对象时传入夫文件名和本文件的名字new File(parent,son);
String parent = "D:\\Test";
String son = "aTest.txt";
File f1 = new File(parent,son);
第三种先创建父文件夹对象,再用字符串的形式传入本文件,进行创建File类
java
//用字符串的方式拼接
File f2 = new File("D:\\Test");
String sonname = "aTest.txt";
File f3 = new File(f2,sonname);
System.out.println(f3);
File常见的成员方法
判断获取方法
创建删除方法
获取并遍历该文件夹
练习
下面是一个对于上面方法相关小练习,要求查找一个文件夹下所有以.txt和.avi结尾的文件,并打印出他们的个数,这道题会用到递归思想
java
package com.itazhang.Demo1;
import java.io.File;
public class FileExercise3 {
static int count1 = 0;
static int count2 = 0;
public static void main(String[] args) {
File f = new File("D:\\11Codingtext\\Myfile\\aaa");
find(f);
System.out.println(".txt结尾的文件有"+count1+"个");
System.out.println(".avi结尾的文件有"+count2+"个");
}
public static void find(File file){
File[] listFiles = file.listFiles();
for (File listFile : listFiles) {
//判断是否为文件
if(listFile.isFile()){
if(listFile.getName().endsWith(".txt")){
count1++;
}
else if(listFile.getName().endsWith(".avi")){
count2++;
}
}else{
find(listFile);
}
}
}
}
从上图看出,都应该是两个,而在上面代码中不能将count计数器和打印语句放在find方法里,因为会使用到递归,每次进入新的文件夹都会重新调用该方法,这样的话就会每次都将count重新设置为初始值实现不了计数的功能,打印语句放入方法中也会导致每次递归就会打印,所以将count计数器使用静态赋值的方式放在main方法,且将打印方法也放在main方法,这样可以在使用递归的同时满足题目的需求。