java 返回用户在指定文件夹中的指定后缀的所有文件
发布网友
发布时间:2022-04-28 16:18
我来回答
共3个回答
热心网友
时间:2022-05-19 13:26
Java实现获取指定路径下的指定格式的文件代码如下:
package filenameFilter;
import java.io.File;
/*
* 实现功能:
* 获取指定路径下的指定格式的文件;
* */
public class Test {
public static void listPath(File file) {
// 接收筛选过后的文件对象数组
//用文件对象调用listFiles(FilenameFilter filter);方法,
//返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录
File files[] = file.listFiles(new MyFilenameFilter());
/*//遍历出指定文件路径下符合条件的文件
for (File f : files) {
System.out.println(f);
}*/
//遍历出指定文件路径下的所有符合筛选条件的文件
for(File f: files){
if(f.isDirectory()){
listPath(f);
}else{
System.out.println(f);
}
}
}
public static void main(String[] args) {
// 创建指定目录的文件对象
File file = new File("F:\\test");
// 调用文件晒筛选的方法,并将文件对象出入,
listPath(file);
}
}
package filenameFilter;
import java.io.File;
import java.io.FilenameFilter;
//实现FilenameFilter接口,可用于过滤器文件名
//本方法实现的是筛选指定格式结尾的文件
public class MyFilenameFilter implements FilenameFilter {
/**
* @param args
*
* 实现功能; 实现FilenameFilter接口,定义出指定的文件筛选器
*
*/
@Override
//重写accept方法,测试指定文件是否应该包含在某一文件列表中
public boolean accept(File dir, String name) {
// TODO Auto-generated method stub
// 创建返回值
boolean flag = true;
// 定义筛选条件
//endWith(String str);判断是否是以指定格式结尾的
if (name.toLowerCase().endsWith(".jpg")) {
} else if (name.toLowerCase().endsWith(".txt")) {
} else if (name.toLowerCase().endsWith(".gif")) {
} else {
flag = false;
}
// 返回定义的返回值
//当返回true时,表示传入的文件满足条件
return flag;
}
}
热心网友
时间:2022-05-19 14:44
File[] files = f.listFiles(filter);已经就已经过滤了文件,所以不可能得到目录,所以需要先调用File [] myList = f.listFiles();得到目录在用File[] files = f.listFiles(filter);试一试下面的代码吧。
public class MyFilter implements FilenameFilter
{
private String type; // 后缀名
public MyFilter(String type)
{
this.type = type;
}
public boolean accept(File dir, String name)
{
return name.endsWith(type);
}
static void filterfile(String dir, String suffix, ArrayList<String> fileList)
{
File f = new File(dir);
File [] myList = f.listFiles();
MyFilter filter = new MyFilter(suffix);
String [] files = f.list(filter);
fileList.addAll(Arrays.asList(files));
for (File a : myList)
{
if (a.isDirectory())
{
filterfile(a.toString(), suffix, fileList);
}
}
}
public static void main(String[] args)
{
ArrayList<String> fileList = new ArrayList<String>();
MyFilter.filterfile("F:\\xiaoshuo", "txt", fileList);
for(String s:fileList)
{
System.out.println(s);
}
}
}
文件需要改一下。
热心网友
时间:2022-05-19 16:19
package my.utils.algorithm.files;
import java.io.IOException;
import java.nio.file.FileVisitResult;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.SimpleFileVisitor;
import java.nio.file.attribute.BasicFileAttributes;
import java.util.ArrayList;
import java.util.List;
public class FileVisitorUtil {
public static void main(String[] args) throws IOException {
Path startingDir = Paths.get("D:\\workspace\\AlgorithmUtils\\src");
FindFileVisitor findJavaVisitor = new FindFileVisitor(".java");
Files.walkFileTree(startingDir, findJavaVisitor);
for (String name : findJavaVisitor.getFilenameList()) {
System.out.println(name);
}
}
}
class FindFileVisitor extends SimpleFileVisitor<Path> {
private List<String> filenameList = new ArrayList<String>();
private String fileSuffix = null;
public FindFileVisitor(String fileSuffix) {
this.fileSuffix = fileSuffix;
}
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) {
if (file.toString().endsWith(fileSuffix)) {
filenameList.add(file.toString());
}
return FileVisitResult.CONTINUE;
}
public List<String> getFilenameList() {
return filenameList;
}
public void setFilenameList(List<String> filenameList) {
this.filenameList = filenameList;
}
}