2017-07-27 131 views
-1

我想Java8的下面的代碼片段轉換爲Java7:Java8 - > Java7轉換File.walk

Files.walk(Paths.get(modifiedPathName)) 
.filter(Files::isRegularFile) 
.forEach(path -> { 
    mutatedFileStorage.add((T) application.readFromFile(path)); 
    }); 

我已經嘗試以下操作:

Iterator<Path> it = Files.walkFileTree(Paths.get(modifiedPathName)).iterator(); 
Path path = null; 
while(it.hasNext()) { 
    path = it.next(); 
    if(Files.isRegularFile(path)) { 
      mutatedFileStorage.add((T) application.readFromFile(path)); 
    } 
} 

的問題是,我總是收到錯誤:

error: no suitable method found for walkFileTree(Path) 
     Iterator<Path> it = Files.walkFileTree(Paths.get(modifiedPathName)).iterator(); 

我不知道如何轉換ert Files.walk到Java7,所以這是我最好的嘗試?是否可以對我的Java7代碼進行一些小修改來修復它?還是我必須完全做其他事情?

+1

嗯,是walkFileTree(路徑)在JavaDoc?順便說一下https://docs.oracle.com/javase/tutorial/essential/io/walk.html –

+0

是的。我需要一個'FileVisitor'嗎? –

+0

我不知道從哪裏開始將'Files.walk'轉換爲Java7 –

回答

3

我想你會想使用Files.walkFileTree

final Collection<T> finalMutatedFileStorage = mutatedFileStorage; 
final Application finalApplication = application; // guessing at the type here 
Files.walkFileTree(Paths.get(modifiedPathName), new SimpleFileVisitor<Path>() { 
    @Override 
    public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) 
    throws IOException { 
    if (attrs.isRegularFile()) { 
     finalMutatedFileStorage.add((T) finalApplication.readFromFile(file)); 
    } 
    return FileVisitResult.CONTINUE; 
    } 
}); 
+0

錯誤:找不到適合walkFileTree的方法(String,<匿名SimpleFileVisitor >) –

+0

您需要傳遞一個Path作爲第一個參數。 'Files.walkFileTree(Path.get(modifiedPathName),...' –

+0

另外,'path'沒有被定義!另外,我一直在收到很多內部類錯誤 –