Basic View

在 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 }
时间: 2024-12-22 07:54:37

Basic View的相关文章

<转>iOS常用第三方库之Masonry

一.前言 关于苹果的布局一直是我比较纠结的问题,是写代码来控制布局,还是使用storyboard来控制布局呢?以前我个人开发的时候很少使用代码去写约束,因为太麻烦了.所以最终选择的都是AutoLayout进行布局,然后拖线设置约束.不过好多公司进行iOS开发的时候都会去动态的修改约束,而且有的会使用约束去创建一些动画,所以不太去用storyboard进行开发(还有就是使用storyboard几个人合作的时候比较麻烦).反倒更多的是写代码开发看起来更加的高效.所以好多开发者都开始去使用Masonr

How Flask Routing Works

@How Flask Routing Works The entire idea of Flask (and the underlying Werkzeug library) is to map URL paths to some logic that you will run (typically, the "view function"). Your basic view is defined like this: @app.route('/greeting/<name>

Wordpress 音频播放器 Wordpress audio player with jQuery audioplayer.swf

原文地址:http://justcoding.iteye.com/blog/545978 Wordpress audio player with jQuery How to use Wordpress audio player (standalone version) with jQuery and jQuery SWFObject (progressive enhancement). <!-- SECTION "Wordpress audio player with jQuery&quo

网上搜集第三方(二)

這是我收集了一些第三方的 Library,大部份都還沒用過Orz,只是這樣整理以後要用到的時候會比較好找到. UI UI Design alertView Menu(選單) Side ViewController UICollectionView Segment Control Others 動畫 影像特效 模糊.毛玻璃效果(Blur) 畫面轉換 各種統計圖表 Line Bar Pie Others Pull To ReFresh Notification Auto Layout Data St

ovirt user guide

Contents [hide] 1 ?Accessing the User Portal 1.1 Logging in to the User Portal 1.2 Logging out of the User Portal 1.3 Logging in for the First Time: Installing the Engine Certificate 1.3.1 Installing oVirt Certificate in Firefox 2 ?Installing Support

iOS常用第三方库之Masonry

一.前言 关于苹果的布局一直是我比较纠结的问题,是写代码来控制布局,还是使用storyboard来控制布局呢?以前我个人开发的时候很少使用代码去写约束,因为太麻烦了.所以最终选择的都是AutoLayout进行布局,然后拖线设置约束.不过好多公司进行iOS开发的时候都会去动态的修改约束,而且有的会使用约束去创建一些动画,所以不太去用storyboard进行开发(还有就是使用storyboard几个人合作的时候比较麻烦).反倒更多的是写代码开发看起来更加的高效.所以好多开发者都开始去使用Masonr

Django基础05-day20

写在前面 上课第20天,打卡: In the end, we are our choices. Build yourself a great story. 1 2017-09-10 - s17day20 2 3 内容回顾: 4 1. Http请求相关 5 6 2. Django请求生命周期 7 alert({{name}}); 8 3. Model操作 9 单表: 10 [obj,obj,obj] = models.xxx.objects.all() 11 12 [{},{},{}] = mod

[UITableView]简介

An instance of UITableView (or simply, a table view) is a means for displaying and editing hierarchical lists of information. 一个UITableVIew(简单的来讲,一个表格视图)的实例是展示和编辑分层的信息列表的方法 A table view displays a list of items in a single column. UITableView is a su

Facebook POP动画简单使用

简单实用POP动画 发现POP比较好的一点是保留了动画结束后的状态,通过block回调.使用POPAnimatableProperty 可以快速添加基本动画,也可以自定义属性动画. 弹性动画 - (void)spring{ POPSpringAnimation* framePOP = [POPSpringAnimation animationWithPropertyNamed:kPOPViewBackgroundColor]; framePOP.springSpeed = 10.f; frame