我在Scala中有以下代码,它返回一个目录和文件树
import java.nio._
import java.nio.file._
import collection.JavaConverters._
object TestFileWalk extends App {
val dir = FileSystems.getDefault.getPath("c://app-files")
Files.walk(dir).iterator().asScala.foreach(println)
}
运行上面的代码会返回:
c:\app-files
c:\app-files\csv
c:\app-files\csv\10
c:\app-files\csv\10\Book2.csv
c:\app-files\csv\11
c:\app-files\csv\11\Book3.txt
c:\app-files\csv\12
c:\app-files\csv\9
c:\app-files\csv\9\Book1.csv
c:\app-files\csvtemp
c:\app-files\csvtemp\user1
c:\app-files\csvtemp\user1\script 2016-11-04.sql
c:\app-files\This is a folder with Uppercase
c:\app-files\This is a folder with Uppercase\File in the folder with Uppercase.csv
如您所见,某些条目是文件夹名称和其他文件名(文件具有扩展名)。
如何以编程方式知道条目是文件还是文件夹?我看了Path,但无法理解。
答案 0 :(得分:1)
那个电话
val dir = FileSystems.getDefault.getPath("c://app-files")
返回Path对象(有关详细信息,请参阅here)。
Path类提供方法[toFile()][2]
;返回一个File对象。
从那里:File类包含[isDirectory()][2]
因此:
dir.toFile().isDirectory()
为您提供所需内容!
除此之外:
Files.walk(dir).iterator().asScala.foreach(println)
walk(dir).iterator()
会产生Iterator<Path>
;再次 - 你有一个路径对象;你可以转换成文件;并且文件知道它是否是目录!