JAVA——File类的常见使用形式有以下几种
- 创建指定路径的File类,根据File类创建文件和文件夹
- 递归搜索某个文件夹下所有的文件夹和文件,遍历输出所有文件/统计文件夹大小
- 递归搜索某个文件夹下所有的文件夹和文件,遍历输出以.bp结尾的文件/统计文件夹大小
- 过滤当前路径下所有满足条件的文件或者文件夹,使用Filter过滤器
- 复制文件夹(递归)
- 创建指定路径的File类,根据File类创建文件和文件夹
public void create() throws IOException{
File file1 = new File("FileDir");
File file = new File("FileDir/xx.txt");
if(file1.mkdir()){
System.out.println("创建文件夹成功");
}
if(file.createNewFile()){
System.out.println("创建文件成功");
}
}
- 递归搜索某个文件夹下所有的文件夹和文件,遍历输出所有文件/统计文件夹大小
public long serchFileAndSubFileSize(File file){
File[] filelist = file.listFiles();
long fileLenth = 0;
for (int i = 0; i < filelist.length; i++) {
File fileTem = filelist[i];
if(fileTem.isFile()){
System.out.print(" 找到文件: "+fileTem.getName());
fileLenth += fileTem.length();
}
else if(fileTem.isDirectory())
{
System.out.print("\n发现目录: "+fileTem.getName());
serchFileAndSubFileSize(fileTem);
}
}
return fileLenth;
}
- 递归搜索某个文件夹下所有的文件夹和文件,遍历输出以.bp结尾的文件/统计文件夹大小
public long serchBpFileAndSubFileSize(File file){
File[] filelist = file.listFiles();
long fileLenth = 0;
for (int i = 0; i < filelist.length; i++) {
File fileTem = filelist[i];
if(fileTem.isFile()&&fileTem.getName().endsWith(".bp")){
System.out.print(" 找到.bp文件:-"+fileTem.getName());
fileLenth += fileTem.length();
}
else if(fileTem.isDirectory())
{
System.out.print("\n发现目录: "+fileTem.getName()+"::::");
fileLenth+=serchBpFileAndSubFileSize(fileTem);
}
}
return fileLenth;
}
- 过滤当前路径下所有满足条件的文件或者文件夹,使用Filter过滤器
public void outSpecialFile(){
File file = new File("FileDir");
File[] fileList = file.listFiles(new FilenameFilter() {
@Override
public boolean accept(File file, String fileName) {
File wholeFile = new File(file, fileName);
if(wholeFile.isFile()&&wholeFile.getName().endsWith(".txt")){
return true;
}
return false;
}
});
public void copyDirectoryToDirectory(File sourceFile, File goalFile) throws Exception{
File goaldir = new File(goalFile,sourceFile.getName());
goaldir.mkdir();
File[] arr = sourceFile.listFiles();
for (File file : arr) {
if(file.isFile()){
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(new File(goaldir,file.getName())));
int buffer;
while((buffer=bis.read())!=-1){
bos.write(buffer);
}
bis.close();
bos.close();
}
else if(file.isDirectory()){
copyDirectoryToDirectory(file, goaldir);
}
}
}