java文件路径工具类_Java文件工具类

Java文件工具类

JavaUtils

可以直接copy使用

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.FilenameFilter;

import java.util.ArrayList;

/*

* 文件工具类

*/

public class FileUtils {

/*

* 指定关键字检索文件

* @param file File对象

* @param key 关键字

* @return 包含关键字的文件路径

*/

public static ArrayList listFiles(File file,final String key) {

//创建过滤器对象

FilenameFilter filter=new FilenameFilter() {

//如果文件名包含关键字返回true,否则返回false

@Override

public boolean accept(File dir, String name) {

// TODO Auto-generated method stub

File currFile=new File(dir,name);

if (currFile.isFile()&&name.contains(key)) {

return true;

}

return false;

}

};

//递归方式获取规定的路径

ArrayListarrayList=fileDir(file,filter);

return arrayList;

}

/*

* 递归方式获取规定的路径

* @param dir file对象

* @param filter 过滤器

* @return 过滤器过滤后的文件路径

*/

private static ArrayList fileDir(File dir, FilenameFilter filter) {

// TODO Auto-generated method stub

ArrayListarrayList=new ArrayList<>();

//获取过滤后的所有文件

File[] lists=dir.listFiles(filter);

for(File list:lists){

//将文件的绝对路径放到集合中

arrayList.add(list.getAbsolutePath());

}

//获取当前目录下所有的文件数组

File[]files=dir.listFiles();

//遍历所有的子目录和文件

for(File file:files){

if (file.isDirectory()) {

//如果是目录,递归调用fileDir

ArrayListevery=fileDir(file, filter);

//将文件夹下的文件路径添加到集合

arrayList.addAll(every);

}

}

//此时的集合中当前目录下的文件路径,和当前目录的子目录下的文件路径

return arrayList;

}

/*

* 指定后缀名检索文件

* @param file File对象

* @param suffixArray 后缀名数组

* @return 指定后缀的文件路径

*/

public static ArrayListlistFiles(File file,final String[] suffixArray){

//创建过滤器对象

FilenameFilter filter=new FilenameFilter() {

@Override

public boolean accept(File dir, String name) {

// TODO Auto-generated method stub

File currFile=new File(dir,name);

//如果文件名以指定后缀名结尾返回true,否则返回false

if (currFile.isFile()) {

for(String suffix:suffixArray){

if (name.endsWith("."+suffix)) {

return true;

}

}

}

return false;

}

};

//递归方式获取规定的路径

ArrayListarrayList=fileDir(file, filter);

return arrayList;

}

/*

* 复制文件/目录

* @param srcFile 源目录

* @param destFile 目标文件

*/

public static void copySrcPathToDestPath(File srcDir,File destDir)

throws Exception{

File[]files=srcDir.listFiles();//子文件目录

for(int i=0;i

//创建指定目录的文件

File copiedFile=new File(destDir,files[i].getName());

//如果是目录

if (files[i].isDirectory()) {

//创建文件夹

if (!copiedFile.mkdirs()) {

System.out.println("无法创建:"+copiedFile);

return;

}

//调用递归,获取子文件夹下的文件路径

copySrcPathToDestPath(files[i],copiedFile);

}else {

//复制文件

FileInputStream input=new FileInputStream(files[i]);//获取输入流

FileOutputStream out=new FileOutputStream(copiedFile);//获取输出流

byte[]buffer=new byte[1024];//创建缓冲区

int n=0;

//循环读取字节

while ((n=input.read(buffer))!=-1) {

out.write(buffer,0,n);

}

//关闭输入流

input.close();

//关闭输出流

out.close();

}

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值