2016-03-29 29 views
0
$ touch file1.txt; sleep 60; ln -s file1.txt file2.txt; ls -l 
$ -rw-r--r-- 1 david staff 0 Mar 29 22:58 file1.txt 
$ lrwxr-xr-x 1 david staff 9 Mar 29 22:59 file2.txt -> file1.txt 

のリンクファイルのLASTMODIFIEDを取得するには、しかし、これらの2つのステートメントはFILE1.TXTのタイムスタンプを返します。java.io.File.lastModified、代わりにリンクされたファイル

new java.io.File("file1.txt").lastModified() // Mar 29 22:58 
new java.io.File("file2.txt").lastModified() // Mar 29 22:58 

したがって、file2.txtはリンクされたファイルからlastModified情報を取得しています。

java.nio.file.Filesと同じ問題に:

そう
Files.readAttributes(new java.io.File("file2.txt").toPath(), classOf[PosixFileAttributes]).lastModifiedTime.toMillis 

、ジャワ/ Scalaでは、私はlastModifiedTime(およびFiles.readAttributes.permissions)を取得することができますどのようにリンク、あるファイルを持っているリンクファイル自体の(代わりに、リンクされたファイルの)、ls -lコマンドのように? java.nio.file.Filesため

答えて

1

のJavadoc:

public static FileTime getLastModifiedTime(Path path, 
             LinkOption... options) 
           throws IOException 

は、ファイルの最終更新時刻を返します。

options配列は、ファイルがシンボリックリンクである場合のシンボリックリンクの処理方法を示すために使用できます。デフォルトでは、シンボリックリンクに続いてリンクの最終ターゲットのファイル属性が読み込まれます。オプションNOFOLLOW_LINKSが存在する場合、シンボリックリンクは追跡されません。

関連する問題