1 回答
TA贡献1802条经验 获得超5个赞
您发布的代码存在一些问题。
您拨打
stream.stream()
该类没有方法。它使用这种方法是没有意义的,因为它已经是一个流。
Stream
stream()
您拨打
x.getName()
此时,是一个没有方法的。可以使用 ,它返回一个 、 或 ,它将路径作为字符串返回,或者将两者组合在一起,仅将文件名作为字符串获取。
x
Path
getName()
getFileName()
Path
toString()
将 分配给 的结果。
List<String> collect
Collection.toArray()
该方法返回一个 .
Object[]
在调用 之前使用 。
collect(Collectors.toList())
toArray()
该类有一个方法,如果数组是所需的最终结果,则没有理由首先收集到列表中。
Stream
toArray()
使用哪个返回(包括 for 和
toArray()
Object[]
Stream
Collection
)你想要一个这意味着,由于不需要先收集,你需要调用
流.toArray(国际功能)
。String[]
您在块外使用。
stream
try
由于是块的本地,因此不能在块外使用它。您也没有理由在块之外使用它,因为您只需要结果。
stream
try
try
String[]
您尝试执行类似 执行的操作。
stream[]
A 不是数组,不能像数组一样访问。此外,a不是容器,而是管道;尝试访问其中的某些元素没有意义。
Stream
Stream
这也适用于 因为 没有字段(同样,因为它不是数组)。
stream.length
Stream
length
解决这些问题,您的代码可能如下所示(基于代码的当前形式,因为我不确定您到底要做什么):
String[] result;try (Stream<Path> stream = Files.walk(start, Integer.MAX_VALUE)) { result = stream.map(Path::toString) .filter(s -> s.endsWith(".txt")) .sorted() .toArray(String[]::new); }for (int i = 0; i < result.length; i++) { // do something }
您也可以考虑使用文件查找(路径,整数,双向预测,文件访问选项...)
和/或路径垫。
添加回答
举报