Java 學習記錄98 — Mapping IO and NIO Methods

張小雄
1 min readDec 21, 2021

--

今天要學的是,複習 IO 跟 NIO 的用法

File file = new File("/Examples/file.txt");  // C:\\Examples\file.txt
Path convertedPath = file.toPath();
System.out.println("converted path = " + convertedPath);

輸出結果:

converted path = \Examples\file.txt

File 是 IO

Path 是 NIO

File parent = new File("/Examples");    // C:\\Examples
File resolvedFile = new File(parent, "dir/file.txt"); // dir\\file.txt
System.out.println(resolvedFile.toPath());
resolvedFile = new File("/Examples", "dir/file.txt"); // C;\\Examples dir\\file.txt
System.out.println(resolvedFile);
Path parentPath = Paths.get("/Examples"); // C:\\Examples
Path childRelativePath = Paths.get("dir/file.txt"); // dir\\file.txt
System.out.println(parentPath.resolve(childRelativePath));

輸出結果:

\Examples\dir\file.txt

\Examples\dir\file.txt

\Examples\dir\file.txt

都能顯示同個位置

File workingDirectory = new File("").getAbsoluteFile();
System.out.println("Working directory = " + workingDirectory.getAbsolutePath());

輸出結果:

Working directory = C:\software\JetBrains\IdeaProjects\java-the-complete-java-developer-course\chapter14

顯示目前工作區的路徑

System.out.println("--- print Dir2 contents using list() --- ");
File dir2File = new File(workingDirectory, "src/nonBlockingIO/path/copyExamples/Dir2");
String[] dir2Contents = dir2File.list();
for (int i = 0; i < dir2Contents.length; i++) {
System.out.println("i= " + i + ": " + dir2Contents[i]);
}

輸出結果:

— — print Dir2 contents using list() — -

i= 0: Dir3

i= 1: file1.txt

i= 2: file2.txt

i= 3: file3.dat

System.out.println("--- print Dir2 contents using listFiles() ---");
File[] dir2Files = dir2File.listFiles();
for (int i = 0; i < dir2Files.length; i++) {
System.out.println("i= " + i + ": " + dir2Files[i].getName());
}

輸出結果:

— — print Dir2 contents using listFiles() — -

i= 0: Dir3

i= 1: file1.txt

i= 2: file2.txt

i= 3: file3.dat

list() 返回的是 array of string

listFIles() 返回的是 array of file

IO 章節就到這邊結束

Tim 簡單的總結如下:

用 NIO 來操作 file sysytems

用 IO 來操作 檔案的讀寫

上面代碼全都紀錄在我的 Github

--

--

張小雄
張小雄

Written by 張小雄

記錄成為軟體工程師的過程

No responses yet