我有一个目录"/local/dath/mi/"
,其中包含许多文件
03_ssa_fruits.csv
03_ssa_can.csv
03_ssa_veg.csv
sxattru.csv
sxprod.csv
sxstore.csv
我需要从该目录中提取特定文件的列表:
/local/dath/mi/03_ssa_fruits.csv
/local/dath/mi/03_ssa_can.csv
/local/dath/mi/03_ssa_veg.csv
我已经尝试了以下代码,但它无法正常工作。我做错了什么。任何人都可以帮助我
def getListOfFiles(dir: String , naming: String): List[String] = {
File(dir).toJava.listFiles.filter(_.isFile).toList.filter { file =>
file.getName.startsWith("03_ss*")
}.map(_.toString)
}
val listOfFile = getListOfFiles(parentDir, File(data.salFilePath).toJava.getName())
答案 0 :(得分:2)
这是一个简单的例子
import java.io.File
def getListOfFiles(dir: String): List[String] = {
val file = new File(dir)
file.listFiles.filter(_.isFile)
.filter(_.getName.startsWith("03_ss"))
.map(_.getPath).toList
}
getListOfFiles("dirrectory path")
希望这有帮助!
答案 1 :(得分:0)
def pathStringToPath(pathString: String): Path = Paths.get(pathString)
def pathStringToDir(pathString: String): Option[File] = pathToDir(pathStringToPath(pathString))
def pathToDir(path: Path): Option[File] = {
val file = path.toFile
file.isDirectory match {
case true => Some(file)
case false => None
}
}
def filesInDir(pathString: String): List[File] = {
val dirOption = pathStringToDir(pathString)
dirOption.fold(List.empty[File])(dir => dir.listFiles().toList)
}
def filesWithPrefixInDir(dirPathString: String, fileNamePrefix: String): List[File] =
filesInDir(dirPathString).filter(file => file.getName.startsWith(fileNamePrefix))
filesWithPrefixInDir(parentDir, "03_ss")
答案 2 :(得分:0)
def fetchFilesFromLocalDirectory(path : String) : List[File] = {
val path = Paths.get(path)
val file = path.toFile
if(file.isDirectory){
file.listFiles().filter(_.getName.endsWith(".txt")).toList
}else List[File]() // TODO: If is not a directory, it should throw an error
}
答案 3 :(得分:0)
os-lib是执行Scala文件系统操作的最简单,最优雅的方法。
以下是列出以“ 03_ss”开头的文件的方法:
os.list(os.pwd/"local_data").filter(_.segments.toList.last.startsWith("03_ssa"))
此解决方案功能强大,因为它使您可以对以“ 03_ssa”开头的文件执行其他文件系统操作。您可以根据需要将这些文件移动到其他目录,获取文件大小,对其进行重命名,删除。
与其他解决方案不同,它只是返回一个字符串列表。有关如何利用os-lib的功能的更多信息,请参见here。
如果您想在自己的计算机上进行实验,请使用以下代码段来设置包含OP文件的文件夹:
os.makeDir(os.pwd/"local_data")
os.write(os.pwd/"local_data"/"03_ssa_fruits.csv", "")
os.write(os.pwd/"local_data"/"03_ssa_can.csv", "")
os.write(os.pwd/"local_data"/"03_ssa_veg.csv", "")
os.write(os.pwd/"local_data"/"sxattru.csv", "")
os.write(os.pwd/"local_data"/"sxprod.csv", "")
os.write(os.pwd/"local_data"/"sxstore.csv", "")