博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Basic View
阅读量:5306 次
发布时间:2019-06-14

本文共 3778 字,大约阅读时间需要 12 分钟。

在 NIO 2 提供的六個檔案系統 metadata 的 view 中,第一個要了解的當然是 Basic View,顧名思義,這是所有檔案系統最基礎的部份,各檔案系統共通的部份。看一下下面的範例程式:

1 package idv.steven.nio2.metadata; 2  3 import java.io.IOException; 4 import java.nio.file.FileVisitOption; 5 import java.nio.file.Files; 6 import java.nio.file.LinkOption; 7 import java.nio.file.Path; 8 import java.nio.file.Paths; 9 import java.nio.file.attribute.BasicFileAttributes;10 11 public class BasicView {12 13     public static void main(String[] args) {14         BasicFileAttributes attr = null;15         //Path path = Paths.get("D:/DemoSite/NIO2/src/idv/steven/nio2/metadata", "BasicView.java");16         Path path = Paths.get("D:/", "basic");17         18         try {19             attr = Files.readAttributes(path, BasicFileAttributes.class, LinkOption.NOFOLLOW_LINKS);20         } catch (IOException e) {21             System.err.println(e);22         }23         24         System.out.println("檔案大小: " + attr.size());25         System.out.println("建立時間: " + attr.creationTime());26         System.out.println("最後存取時間: " + attr.lastAccessTime());27         System.out.println("最後修改時間: " + attr.lastModifiedTime());28         System.out.println("是否為目錄? " + attr.isDirectory());29         System.out.println("是否為一般檔案? " + attr.isRegularFile());30         System.out.println("是否為連結? " + attr.isSymbolicLink());31         System.out.println("是否為目錄、一般檔案、捷徑外的物件? " + attr.isOther());32     }33 }

這個程式會輸出檔案的 BasicView 的屬性,上面程式的第 15 行是指向一個實體檔案,第 16 行是指向一個「符號連結」(symbol link),輸出結果如下:

  • 實體檔案
檔案大小: 1267建立時間: 2015-07-13T11:46:55.991394Z最後存取時間: 2015-07-13T11:46:55.991394Z最後修改時間: 2015-07-13T12:33:58.443979Z是否為目錄? false是否為一般檔案? true是否為連結? false是否為目錄、一般檔案、捷徑外的物件? false
  • 符號連結
檔案大小: 0建立時間: 2015-07-13T12:30:41.166665Z最後存取時間: 2015-07-13T12:30:41.166665Z最後修改時間: 2015-07-13T12:30:41.166665Z是否為目錄? false是否為一般檔案? false是否為連結? true是否為目錄、一般檔案、捷徑外的物件? false

比較一下兩個輸出,可以了解兩者的差異,在 Windows 7 下測試,符號連結的檔案大小為 0,在 scientific linux 7.x 中則不為 0,不同的作業系統還是會有差異。在 unix / linux 中使用連結是非常平常的事,在 Windows 中很少見,該怎麼在 Windows 中建立連結呢? 指令如下,這樣可以在 D:/ 下建立一個命名為 basic 的符號連結,指向 BasicView.java。

D:\>mklink basic "D:/DemoSite/NIO2/src/idv/steven/nio2/metadata/BasicView.java"

上面的程式還有另外一種寫法,可以得到相同的結果,如下:

1 package idv.steven.nio2.metadata; 2  3 import java.io.IOException; 4 import java.nio.file.FileVisitOption; 5 import java.nio.file.Files; 6 import java.nio.file.LinkOption; 7 import java.nio.file.Path; 8 import java.nio.file.Paths; 9 import java.nio.file.attribute.BasicFileAttributes;10 11 public class BasicView2 {12 13     public static void main(String[] args) throws IOException {14         BasicFileAttributes attr = null;15         //Path path = Paths.get("D:/DemoSite/NIO2/src/idv/steven/nio2/metadata", "BasicView.java");16         Path path = Paths.get("D:/", "basic");17         18         System.out.println("檔案大小: " + (Long)Files.getAttribute(path, "basic:size", LinkOption.NOFOLLOW_LINKS));19         System.out.println("建立時間: " + Files.getAttribute(path, "basic:creationTime", LinkOption.NOFOLLOW_LINKS));20         System.out.println("最後存取時間: " + Files.getAttribute(path, "basic:lastAccessTime", LinkOption.NOFOLLOW_LINKS));21         System.out.println("最後修改時間: " + Files.getAttribute(path, "basic:lastModifiedTime", LinkOption.NOFOLLOW_LINKS));22         System.out.println("是否為目錄? " + Files.getAttribute(path, "basic:isDirectory", LinkOption.NOFOLLOW_LINKS));23         System.out.println("是否為一般檔案? " + Files.getAttribute(path, "basic:isRegularFile", LinkOption.NOFOLLOW_LINKS));24         System.out.println("是否為連結? " + Files.getAttribute(path, "basic:isSymbolicLink", LinkOption.NOFOLLOW_LINKS));25         System.out.println("是否為目錄、一般檔案、捷徑外的物件? " + Files.getAttribute(path, "basic:isOther", LinkOption.NOFOLLOW_LINKS));26     }27 }

 

转载于:https://www.cnblogs.com/stevwn/p/4643895.html

你可能感兴趣的文章
Apache安装配置详解(Win平台下)
查看>>
Vim配置Node.js开发工具
查看>>
iOS开发者需要的5款排版工具
查看>>
web前端面试题2017
查看>>
Reflection in Teaching
查看>>
intellij idea 将模块打jar包
查看>>
给MySQL增加Sequence管理功能
查看>>
吴超老师课程--Flume的安装和介绍
查看>>
ELMAH——可插拔错误日志工具
查看>>
MySQL学习笔记(四)
查看>>
【Crash Course Psychology】2. Research & Experimentation笔记
查看>>
两数和
查看>>
Python subprocess 模块
查看>>
Http协议
查看>>
c#获取文件路径
查看>>
移动设备和SharePoint 2013 - 第3部分:推送通知
查看>>
SOPC Builder中SystemID
查看>>
MySQL数据库备份工具mysqldump的使用(转)
查看>>
SSL 1120——【USACO 2.4】回家[最短路]
查看>>
Python学习之路:新式类VS经典类
查看>>