gpt4 book ai didi

java - 使用文件集合,获取与特定文件夹相关的 getPath()

转载 作者:行者123 更新时间:2023-11-29 05:56:13 25 4
gpt4 key购买 nike

我正在使用

org.apache.commons.io.FileUtils

用于获取指定文件夹(和相关子文件夹)中包含的所有归档 PDF

这里是一个简单的代码

import java.io.File;
import java.util.Collection;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.filefilter.IOFileFilter;
import org.apache.commons.io.filefilter.TrueFileFilter;

public class FileFilterTest
{
public static void main(String[] args)
{
File ROOT_DIR = new File("C:\\PDF_Folder");

Collection<File> PDF_FILES = FileUtils.listFiles(ROOT_DIR, new IOFileFilter() {

@Override
public boolean accept(File file)
{
return file.getName().endsWith(".pdf");
}

@Override
public boolean accept(File dir, String name)
{
return name.endsWith(".pdf");
}
}, TrueFileFilter.INSTANCE);

for(File pdf : PDF_FILES)
{
System.out.println(pdf.getPath());
}
}
}

getPath() 方法像这样返回绝对路径

C:\PDF_Folder\SomeFolder\AnotherFolder\A\20120430_TT006059__0000039.pdf
C:\PDF_Folder\Folder1\A\20120430_TT006060__000003A.pdf
C:\PDF_Folder\Folder1\Folder2\Folder3\B\20120430_TT006071__000003B.pdf
C:\PDF_Folder\Folder4\20120430_TT006125__000003C.pdf

有没有办法只获取与提供的根文件夹相关的路径?

SomeFolder\AnotherFolder\A\20120430_TT006059__0000039.pdf
Folder1\A\20120430_TT006060__000003A.pdf
Folder1\Folder2\Folder3\B\20120430_TT006071__000003B.pdf
Folder4\20120430_TT006125__000003C.pdf

编辑:这是由 jsn 代码创建的解决方案

for(File pdf : PDF_FILES)
{
URI rootURI = ROOT_DIR.toURI();
URI fileURI = pdf.toURI();

URI relativeURI = rootURI.relativize(fileURI);
String relativePath = relativeURI.getPath();

System.out.println(relativePath);
}

最佳答案

可能是这样的:

String relPath = new File(".").toURI().relativize(pdf.toURI()).getPath();
System.out.println(relPath);

经过测试,这有效。

关于java - 使用文件集合,获取与特定文件夹相关的 getPath(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12012824/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com