在Scala中读取基本文件属性?

时间:2015-12-04 04:33:59

标签: scala

我试图使用Scala获取基本文件属性,我的参考是这个Java问题:

Determine file creation date in Java

这段代码我试图在Scala中重写:

static void getAttributes(String pathStr) throws IOException {
    Path p = Paths.get(pathStr);
    BasicFileAttributes view
       = Files.getFileAttributeView(p, BasicFileAttributeView.class)
              .readAttributes();
    System.out.println(view.creationTime()+" is the same as "+view.lastModifiedTime());
  }

我无法弄清楚的是这行代码..我不明白如何使用scala以这种方式传递一个类...或者为什么Java坚持这样做第一个地方而不是使用实际构造的对象作为参数。有人可以帮我写这行代码以正常运行吗?我必须使用错误的语法

val  attr = Files.readAttributes(f,Class[BasicFileAttributeView])

2 个答案:

答案 0 :(得分:5)

试试这个:

def attrs(pathStr:String) = 
  Files.getFileAttributeView(
    Paths.get(pathStr), 
    classOf[BasicFileAttributes] //corrected
  ).readAttributes

答案 1 :(得分:0)

从Scala中获取文件创建日期,来自基本文件属性:

//选项1,

import java.nio.file.{Files, Paths}
import java.nio.file.attribute.BasicFileAttributes

val pathStr = "/tmp/test.sql"
Files.readAttributes(Paths.get(pathStr), classOf[BasicFileAttributes]).creationTime

res3:java.nio.file.attribute.FileTime = 2018-03-06T00:25:52Z

//选项2,

import java.nio.file.{Files, Paths}
import java.nio.file.attribute.BasicFileAttributeView

val pathStr = "/tmp/test.sql"
{
  Files
    .getFileAttributeView(Paths.get(pathStr), classOf[BasicFileAttributeView])
    .readAttributes.creationTime
}

res20:java.nio.file.attribute.FileTime = 2018-03-07T19:00:19Z