Java NIO學習(Path接口、Paths和Files工具類的使用)


NIO學習:Paths和Files工具類的使用

JDK1.7引入了新的IO操作類。在java.nio.file包下,Java NIO Path接口和Files類。

  • Path接口:Path表示的是一個目錄名序列,其后還可以跟着一個文件名,路徑中第一個部件是根部件時就是絕對路徑。
  • 例如:/或C:/。而允許訪問的根部件取決於文件系統。

  • 以根部件開始的路徑是絕對路徑,否則就是相對路徑。

  • 靜態的Paths.get方法接受一個或多個字符串,字符串之間自動使用默認文件系統的路徑分隔符連接起來(Unix是/,Windows是\),這就解決了跨平台的問題。接着解析連接起來的結果,如果不是合法路徑就拋出InvalidPathException異常,否則就返回一個Path對象。

  • Files工具類:提供了更方便更高效的對文件進行讀寫的操作方法。

  • 1、讀寫文件

  • static Path write(Path path, byte[] bytes, OpenOption...Options):寫入文件

  • static byte[] readAllBytes(Path path):讀取文件中的所有字節。

代碼示例

import java.io.File;
import java.io.IOException;
import java.nio.file.FileSystems;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;
import java.nio.file.StandardOpenOption;


public class PathFilesDemo {
	public static void main(String[] args) {
		createFileOrDir();
	}
	
	// 創建文件或目錄
	private static void createFileOrDir() {
		try {
			// 創建新目錄,除了最后一個部件,其他必須是存在的
			Files.createDirectory(Paths.get("F:/test"));

			// 創建路徑中的中間目錄,能創建不存在的中間部件
			Files.createDirectories(Paths.get("F:/test/test"));

			// 創建文件
			Files.createFile(Paths.get("F:/testbak.txt"));
		} catch (IOException e) {
			e.printStackTrace();
		}
	}// createFileOrDir

	// 刪除文件
	private static void deleteFile() {
		Path p = Paths.get("F:/test.txt");
		try {
			Files.delete(p);// 用static boolean deleteIfExists(Path path)方法比較好
			System.out.println("刪除成功");
		} catch (IOException e) {
			e.printStackTrace();
		}
	}// deleteFile

	// 移動文件
	private static void moveFile() {
		Path pSrc = Paths.get("F:/test.txt");
		Path pDest = Paths.get("E:/test.txt");
		try {
			Files.move(pSrc, pDest, StandardCopyOption.REPLACE_EXISTING);
			System.out.println("移動成功");
		} catch (IOException e) {
			e.printStackTrace();
		}
	}// moveFile

	// 復制文件
	private static void copyFile() {
		Path pSrc = Paths.get("F:/test.txt");
		Path pDest = Paths.get("F:/testbak.txt");
		try {
			Files.copy(pSrc, pDest, StandardCopyOption.REPLACE_EXISTING);
			System.out.println("復制成功");
		} catch (IOException e) {
			e.printStackTrace();
		}
	}// copyFile

	// 從文件讀取數據
	private static void readFromFile() {
		Path p = Paths.get("F:/", "test.txt");
		try {
			byte[] bytes = Files.readAllBytes(p);
			System.out.println(new String(bytes));
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	// 向文件寫入數據
	private static void write2File() {
		// 獲得路徑
		Path p = Paths.get("F:/", "test.txt");
		String info = "I love java really,你喜歡什么?";
		try {
			// 向文件中寫入信息
			Files.write(p, info.getBytes("utf8"), StandardOpenOption.APPEND);
			System.out.println("寫入成功");
		} catch (IOException e) {
			e.printStackTrace();
		}
	}// write2File

	// 獲得文件路徑的幾種方法
	private static void getFilePath() {
		File file = new File("F:/test.txt");
		// Path
		Path p1 = Paths.get("F:/", "test.txt");// F:\test.txt
		System.out.println(p1);

		Path p2 = file.toPath();
		System.out.println(p2);

		Path p3 = FileSystems.getDefault().getPath("F:/", "test.txt");
		System.out.println(p3);
	}// getFilePath
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM