如何检测Java File Walk是文件还是文件夹(在Scala中)?

时间:2017-02-17 18:53:25

标签: java scala

我在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,但无法理解。

1 个答案:

答案 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>;再次 - 你有一个路径对象;你可以转换成文件;并且文件知道它是否是目录!