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 }

 

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
.getFontMetrics().descent; canvas.drawText(text, x, y, mPaint); } } if (lastHeaderPosition >= 0 && lastHeaderPosition < itemCount - 1) { View firstChild = parent.getChildAt(0); int firstVisible以下是一个基本的冒泡排序的BASIC程序,可以在BASIC编译器中运行: ``` 10 DIMPosition = parent.getChildAdapterPosition(firstChild); View lastHeader = parent.getChildAt(childCount - 1); int lastHeaderTop = A(10) 20 INPUT "请输入10个数:", A(1), A(2), A(3), A(4), lastHeader.getTop(); int nextHeaderPosition = getNextHeaderPosition(lastHeaderPosition); if (nextHeaderPosition == firstVisiblePosition A(5), A(6), A(7), A(8), A(9), A(10) 30 FOR I = ) { int lastHeaderBottom = lastHeader.getBottom(); int overlayTop = Math.max(firstChild.getTop(), lastHeaderBottom1 TO 9 40 FOR J = 1 TO 10 - I 50 IF A(J) > A(J + 1)); int overlayBottom = Math.min(lastHeaderTop + lastHeader.getHeight(), parent.getBottom()); mTvOverlay.setText(mAppInfos.get(nextHeaderPosition).firstLetter); showOverlay(overlayTop, overlayBottom); } else { hideOverlay(); } THEN 60 T = A(J) 70 A(J) = A(J + 1) 80 A(J + 1) = T } else { hideOverlay(); } } private int getNextHeaderPosition(int position) { String currentLetter = m90 END IF 100 NEXT J 110 NEXT I 120 PRINT "排序后的结果为:" 130 FOR I = 1 TOAppInfos.get(position).firstLetter; for (int i = position + 1; i < mAppInfos.size(); i++) { 10 140 PRINT A(I) 150 NEXT I ``` 程序通过输入10个数,使用冒泡排序算法对这 AppInfo appInfo = mAppInfos.get(i); if (!TextUtils.equals(appInfo.firstLetter, currentLetter)) { return i; } } return mAppInfos.size(); } @Override public void getItemOffsets(@NonNull Rect out些数进行排序,最终输出排序后的结果。程序逐个比较相邻的数,如果前面的数比Rect, @NonNull View view, @NonNull RecyclerView parent, @NonNull RecyclerView.State state) { int position = parent.getChildAdapterPosition(view后面的数大,则交换它们的位置。重复进行这样的比较和交换,直到所有的数都排好序为止。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值