如何在java.io.File中实现相同的功能;
List<File> List = (List<File>) FileUtils.listFilesAndDirs(directory,
TrueFileFilter.TRUE, TrueFileFilter.TRUE);
String fileID = f.getAbsolutePath().replaceAll(staticRoot, "");而重构到java.nio.file.*;
DirectoryStream<Path> List = Files.newDirectoryStream(Paths.get(directory));
String fileID = f.??? 什么方法会返回与java.io.File包中相同的输出?谢谢。
我试过了
String fileID = f.toAbsolutePath().toString().replaceAll(staticRoot, "");
for (Path f : fList) {
String fileID = f.toAbsolutePath().toString().replaceAll(staticRoot, "");
System.out.println("file ID : " + fileID);
String parentID = null;
}staticRoot = /home/test/dir1/dir10/test9.txt
结果应剪切'/home/test/‘并仅返回dir1/dir10/test9.txt
发布于 2019-01-08 19:52:00
由于FileUtils.listFilesAndDirs(directory, TrueFileFilter.TRUE, TrueFileFilter.TRUE)将递归地访问directory中的所有子目录,因此您很可能希望将其替换为Files.walk(Path, FileVisitOption...)方法。
返回一个流,它通过遍历以给定起始文件为根的文件树,懒惰地填充路径。首先对文件树进行深度遍历,流中的元素是路径对象,这些对象是通过解析start的相对路径获得的。
发布于 2019-01-08 20:29:54
给定一个表示/home/test/dir1/dir10/test9.txt的j.n.f.Path对象,调用.getParent()获取表示dir10的内容。然后,如果您有一个表示/home/test/dir1/dir10/subdir1/subdir2/foo.txt的路径,并且希望将其转换为subdir1/subdir2/foo.txt,则可以使用j.f.Path的relativize方法来完成此操作。不需要替换或replaceAll。
注意:您使用的replaceAll是错误的。replaceAll将正则表达式作为第一个参数,将替换作为第二个参数,并替换该正则表达式上的所有命中内容。replace方法将字符串作为参数,将替换作为第二个参数,并..也会替换所有。假设您的staticRoot不是正则表达式,那么您使用的调用是错误的。只是给下一次上一课。是的,名字是令人困惑的。
https://stackoverflow.com/questions/54091105
复制相似问题