Java 如何将文件对象列表转换为路径对象列表?
Java how to convert List of File objects to List of Path objects?
我正在构建一个用户已经拥有处理路径数组的代码的库。
我有这个:
Collection<File> filesT = FileUtils.listFiles(
new File(dir), new RegexFileFilter(".txt$"),
DirectoryFileFilter.DIRECTORY
);
我始终使用 File 对象列表,但需要一种方法将 filesT 转换为 List 。
有没有一种快速的方法,也许是 lambda 可以将一个列表快速转换为另一个列表?
如果您有 Collection<File>
,您可以使用 File::toPath
方法参考将其转换为 List<Path>
或 Path[]
:
public List<Path> filesToPathList(Collection<File> files) {
return files.stream().map(File::toPath).collect(Collectors.toList());
}
public Path[] filesToPathArray(Collection<File> files) {
return files.stream().map(File::toPath).toArray(Path[]::new);
}
我同意 Alex Rudenko 的回答,但是 toArray() 需要转换。我提出了一个替代方案(我将如何实现,返回不可变集合):
Set<Path> mapFilesToPaths(Collection<File> files) {
return files.stream().map(File::toPath).collect(Collectors.toUnmodifiableSet());
}
我正在构建一个用户已经拥有处理路径数组的代码的库。 我有这个:
Collection<File> filesT = FileUtils.listFiles(
new File(dir), new RegexFileFilter(".txt$"),
DirectoryFileFilter.DIRECTORY
);
我始终使用 File 对象列表,但需要一种方法将 filesT 转换为 List
如果您有 Collection<File>
,您可以使用 File::toPath
方法参考将其转换为 List<Path>
或 Path[]
:
public List<Path> filesToPathList(Collection<File> files) {
return files.stream().map(File::toPath).collect(Collectors.toList());
}
public Path[] filesToPathArray(Collection<File> files) {
return files.stream().map(File::toPath).toArray(Path[]::new);
}
我同意 Alex Rudenko 的回答,但是 toArray() 需要转换。我提出了一个替代方案(我将如何实现,返回不可变集合):
Set<Path> mapFilesToPaths(Collection<File> files) {
return files.stream().map(File::toPath).collect(Collectors.toUnmodifiableSet());
}