nio.File 檔案操作
阿新 • • 發佈:2018-12-09
Path 類是jdk7新增加的特性之一,用來代替java.io.File類。 之所以新增這個類,是由於java.io.File類有很多缺陷: 1.java.io.File類裡面很多方法失敗時沒有異常處理,或丟擲異常 java.io.File.delete()方法返回一個布林值指示成功或失敗但是沒有失敗原因 2.Path 速度快,方便。
Path 操作
1.刪除檔案 2.遍歷目錄,不包括子目錄的檔案
Path dir = Paths.get("F:\\LZ\\pdf");
DirectoryStream<Path> stream = Files.newDirectoryStream (dir);
for(Path path : stream){
System.out.println(path.getFileName());
}
- 1
- 2
- 3
- 4
- 5
2.遍歷目錄,及其子目錄下的檔案
Path dir = Paths.get("F:\\LZ\\pdf");
Files.walkFileTree(dir,new SimpleFileVisitor<Path>(){
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs)
throws IOException {
if(file.toString().endsWith(".pdf")){
System.out.println(file.getFileName());
}
return super.visitFile(file, attrs);
}
});
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
3.建立多級目錄
Path dir = Paths.get("F:\\LZ\\xx\\dd");
Files.createDirectories(dir );
- 1
- 2
4.建立檔案, 不存在則丟擲異常
Path dir = Paths.get("F:\\LZ\\xx\\dd\\1.txt");
Files.createFile(dir);
- 1
- 2
5.檔案的複製
Path src = Paths.get("F:\\LZ\\xx\\dd\\1.txt");
Path target = Paths.get("F:\\LZ\\xx\\dd\\2.txt");
//REPLACE_EXISTING:檔案存在,就替換
Files.copy(src, target,StandardCopyOption.REPLACE_EXISTING);
- 1
- 2
- 3
- 4
- 5
6.一行一行讀取檔案
Path src = Paths.get("F:\\LZ\\xx\\dd\\1.txt");
BufferedReader reader = Files.newBufferedReader(src,StandardCharsets.UTF_8);
String line ;
while((line=reader.readLine()) != null){
System.out.println(line);
}
reader.close();
- 1
- 2
- 3
- 4
- 5
- 6
- 7
7.寫入字串
Path src = Paths.get("F:\\LZ\\xx\\dd\\1.txt");
BufferedWriter writer = Files.newBufferedWriter(src, StandardCharsets.UTF_8
,StandardOpenOption.APPEND); // 追加
writer.write("hello word Path");
writer.close();
- 1
- 2
- 3
- 4
- 5
8.二進位制 讀寫 與字串類似
- 一個方法直接去取字串 和 二進位制流
// 字串
Path src = Paths.get("F:\\LZ\\xx\\dd\\1.txt");
for(String line : Files.readAllLines(src)){
System.out.println(line);
}
// 二進位制流
byte[] bytes = Files.readAllBytes(src);
- 1
- 2
- 3
- 4
- 5
- 6
- 7
10.監測是否 目錄下的 檔案,目錄 被修改,建立,或刪除.
11.讀取檔案的 最後 1000 個字元