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 }
您也可以考慮使用文件查找(路徑,整數,雙向預測,文件訪問選項...)
和/或路徑墊。
添加回答
舉報