版權聲明:本文為部落客chszs的原創文章,未經部落客允許不得轉載。 https://blog.csdn.net/chszs/article/details/8168023
作者:chszs,轉載需注明。
作者部落格首頁:http://blog.csdn.net/chszs
JDK 7進行檔案樹複制和周遊非常簡單。與JDK 6或更早的版本相比,你會發現使用JDK 7的NIO包很簡單,所需的代碼非常少。
本文用兩個例子展示了JDK 7的檔案I/O機制,java.nio.file包提供了對檔案I/O的支援,可以通路預設的檔案系統。這個包非常直覺,易于使用。
例子所需的工具:
1. JDK 7
2. Eclipse 4.2
在例子中,我們使用java.nio.file.Files所支援的檔案操作。這個類包含了許多靜态方法,比如對檔案和目錄的複制、移動、删除、周遊檔案樹等。
java.nio.file.Path是java.nio.file包的主要的入口點之一。Path類表示檔案系統的路徑。
例1:檔案複制操作
從源檔案複制到目标檔案,使用Files.copy方法。我們還需要提供不同的選項——使用java.nio.file.CopyOption來指定怎樣複制檔案。
CopyOpDemo.java代碼如下:
package test;
import java.io.IOException;
import java.nio.file.CopyOption;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;
public class CopyOpDemo {
public static void main(String[] args){
// 待複制的源檔案
Path srcFile = Paths.get("D:/tmp/test1.htm");
// 複制後的目标檔案
Path targetFile = Paths.get("D:/destFile.txt");
// 複制選項定義
CopyOption[] options = new CopyOption[]{
StandardCopyOption.REPLACE_EXISTING
};
// 複制檔案
try {
Files.copy(srcFile, targetFile, options);
System.out.println("複制成功!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
作者:chszs,轉載需注明。作者部落格首頁:http://blog.csdn.net/chszs
例2:周遊檔案樹
要周遊檔案樹,使用Files.walkFileTree方法。此方法需要指定根路徑或起始路徑。以及要重寫SimpleFileVisitor的實作類的兩個方法:preVisitDirectory和visitFile。兩個方法定義了在通路目錄和檔案期間想做的事。這使得我們要列印目錄和檔案名就非常簡單了。
RecursiveFileListDemo.java代碼如下:
package test;
import java.nio.file.FileVisitResult;
import java.nio.file.Files;
import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.SimpleFileVisitor;
import java.nio.file.attribute.BasicFileAttributes;
public class RecursiveFileListDemo {
public static void main(String[] args) throws IOException{
Path startPath = Paths.get("D:/tmp/s5-blank");
Files.walkFileTree(startPath, new SimpleFileVisitor<Path>(){
@Override
public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs){
System.out.println(">>>>Dir : " + dir);
return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs){
System.out.println("File : " + file);
return FileVisitResult.CONTINUE;
}
});
}
}
檔案目錄如下圖所示:
那麼程式執行後,控制台輸出如下:
>>>>Dir : D:\tmp\s5-blank
File : D:\tmp\s5-blank\.DS_Store
File : D:\tmp\s5-blank\s5-blank.html
>>>>Dir : D:\tmp\s5-blank\ui
File : D:\tmp\s5-blank\ui\.DS_Store
>>>>Dir : D:\tmp\s5-blank\ui\default
File : D:\tmp\s5-blank\ui\default\.DS_Store
File : D:\tmp\s5-blank\ui\default\blank.gif
File : D:\tmp\s5-blank\ui\default\bodybg.gif
File : D:\tmp\s5-blank\ui\default\framing.css
File : D:\tmp\s5-blank\ui\default\iepngfix.htc
File : D:\tmp\s5-blank\ui\default\opera.css
File : D:\tmp\s5-blank\ui\default\outline.css
File : D:\tmp\s5-blank\ui\default\pretty.css
File : D:\tmp\s5-blank\ui\default\print.css
File : D:\tmp\s5-blank\ui\default\s5-core.css
File : D:\tmp\s5-blank\ui\default\slides.css
File : D:\tmp\s5-blank\ui\default\slides.js