今天要學的是,複習 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 來操作 檔案的讀寫