1. 程式人生 > >nio.File 檔案操作

nio.File 檔案操作

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.二進位制 讀寫 與字串類似

  1. 一個方法直接去取字串 和 二進位制流
    // 字串
    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 個字元 這裡寫圖片描述