iT邦幫忙

DAY 2
1

java菜鳥的學習筆記系列 第 2

使用java NIO2-Part 1

NIO2 API(java.nio)是java SE 7所推出的新API,剛開始學java的時候是用舊的IO API(java.io),開啟/寫入檔案基本功能而言(FileInputStream/FileOutputStream),個人感覺是新舊差異不大,但對路徑/檔案的操作就所差異,或是說更加方便,NIO中的Path用於路徑的操作(組合/擷取路徑資訊),Files用於檔案操作(複製/新增/刪除...),細部可參考java.nio.file.Path, java.nio.file.Files,比較新奇的功能是FileVisitor,用於掃描特定資料夾下的檔案與資料夾資訊,Part 1 demo在特定資料夾下尋找mp4檔,要實現掃描資料的功能必須呼叫walkFileTree方法,並傳入Path以及實作FileVisitor物件,實作FileVisitor必須要有四個方法要定義,對新手來說有點麻煩,所以有一SimpleFileVisitor類別可供繼承,本例使用visitFile來掃描資料夾裡.mp4檔,可設定於不同條件下可傳回不同的狀態來決定掃描是否繼續進行,程式碼如下。

package nio;

import java.io.IOException;
import java.nio.file.*;
import java.nio.file.attribute.BasicFileAttributes;


public class PathTest {

	/**
	 * @param args
	 * @throws IOException 
	 */
	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		Path file = Paths.get("H:\\seo.sql"); 
		BasicFileAttributes attrs=Files.readAttributes(file, BasicFileAttributes.class);
		System.out.println(attrs.creationTime());
		System.out.println(attrs.lastModifiedTime());
		System.out.println(attrs.size()/1000000);
		
		Path rootD=Paths.get("E:\\youtube"); //取得要掃描的目錄
		Files.walkFileTree(rootD, new FindMp4Visitor()); //呼叫walkFileTree方法,
														 //須傳入Path以及實作FileVisitor的物件
		
	}
	public static class FindMp4Visitor extends SimpleFileVisitor<Path>{ //SimpleFileVisitor是最簡單易用實作FileVisitor的類別
		@Override
		public FileVisitResult visitFile(Path file, BasicFileAttributes attrs){//掃描檔案
			if(file.toString().endsWith(".mp4")){//如果檔案結尾為.mp4
				System.out.println(file.getFileName());
			}
		return FileVisitResult.CONTINUE; //繼續往下找
		}
	}

}

FileVisitor必須定義的四個方法:

  1. FileVisitResult postVisitDirectory(T dir, IOException exc)
    Invoked for a directory after entries in the directory, and all of their descendants, have been visited.
  2. FileVisitResult preVisitDirectory(T dir, BasicFileAttributes attrs)
    Invoked for a directory before entries in the directory are visited.
  3. FileVisitResult visitFile(T file, BasicFileAttributes attrs)
    Invoked for a file in a directory.
  4. FileVisitResult visitFileFailed(T file, IOException exc)
    Invoked for a file that could not be visited.

上一篇
使用Apache POI產生Excel檔
下一篇
使用iText產生PDF檔-Part 1
系列文
java菜鳥的學習筆記28
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言