1. 程式人生 > >java輸入輸出(14)NIO.2

java輸入輸出(14)NIO.2

  1. NIO.2是java7對原有的NIO進行了重大改進
  2. 這裡首先介紹一下Path,Paths,Files的一些用法,具體的講解穿插在程式碼中
    //Path介面代表一個平臺無關的平臺路徑
    import java.nio.file.Path;
    import java.nio.file.Paths;
    
    public class PathTest {
        public static void main(String args[]){
            Path p = Paths.get(".");
    //        以當前路徑來建立Path物件
    
            System.out.println("path裡包含的路徑數量:"+ p.getNameCount());
    //        getNameCount返回包含的路徑數目
    
            System.out.println("p的根路徑"+p.getRoot());
    //        getRoot返回路徑的根路徑
    
            Path absolutePath = p.toAbsolutePath();
    //        toAbsolutePath可以將當前路徑轉換為絕對路徑
    
            System.out.println(absolutePath);
    
            System.out.println("絕對路徑"+absolutePath.getRoot());
            System.out.println("包含的路徑數量"+absolutePath.getNameCount());
            System.out.println(absolutePath.getName(2));
    
            Path p2 = Paths.get("e:", "JavaProject");
    //        這一句是例項化一個path物件,路徑為E:/JavaProject
    
            System.out.println(p2);
        }
    }
    //執行這個程式,可以看到以下執行結果
    //        path裡包含的路徑數量:1
    //        p的根路徑null
    //        E:\JavaProject\FileOperatins\.
    //        絕對路徑E:\
    //        包含的路徑數量3
    //        .
    //Files包含了大量靜態工具方法來操作檔案
    import java.io.FileOutputStream;
    import java.nio.charset.Charset;
    import java.nio.file.FileStore;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    import java.util.ArrayList;
    import java.util.List;
    
    public class FilesTest {
        public static void main(String args[]) throws Exception{
            Files.copy(Paths.get("src/FilesTest.java"), new FileOutputStream("src/a.txt"));
    //        copy方法傳入兩個檔案引數,作用是將前面一個檔案的內容賦值到後面的檔案中
    
            System.out.println("該檔案是否隱藏檔案" +Files.isHidden(Paths.get("src/FilesTest.java")));
    //        isHidden方法可以判斷檔案按是否為隱藏檔案
    
            List<String> lines = Files.readAllLines(Paths.get("src/FilesTest.java"), Charset.forName("UTF-8"));
    //        readAllLines方法是逐行讀取問價的內容,後面一個引數是給定字符集,返回一個String的集合
    
            System.out.println(lines);
    
            System.out.println("FilesTest.java的大小為"+Files.size(Paths.get("src/FilesTest.java")));
    //       size方法 返回檔案的大小(以位元組為單位)。
    
            List<String> peom = new ArrayList<>();
            peom.add("aaa");
            peom.add("bbb");
    
            Files.write(Paths.get("pome.txt"), peom,Charset.forName("gbk"));
    //       write方法是將指定的內容寫入到指定的檔案之中,如果檔案不存在則建立該檔案
    
            FileStore cStore = Files.getFileStore(Paths.get("C:"));
    //       getFileStore方法的官方解釋為返回表示檔案所在檔案儲存區的 FileStore。
    
    
            System.out.println("共有空間"+cStore.getTotalSpace());
            System.out.println("可用空間"+cStore.getUsableSpace());
        }
    }
    //執行這個程式可以看到以下顯示結果和在a.txt中看到和這個java檔案一樣的顯示內容
    //        該檔案是否隱藏檔案false
    //        [import java.io.File;, import java.io.FileOutputStream;, import java.nio.charset.Charset;, import java.nio.file.FileStore;, import java.nio.file.Files;, import java.nio.file.Paths;, import java.util.ArrayList;, import java.util.List;, , public class FilesTest {,     public static void main(String args[]) throws Exception{,         Files.copy(Paths.get("src/FilesTest.java"), new FileOutputStream("src/a.txt"));, //        copy方法傳入兩個檔案引數,作用是將前面一個檔案的內容賦值到後面的檔案中, ,         System.out.println("該檔案是否隱藏檔案" +Files.isHidden(Paths.get("src/FilesTest.java")));, //        isHidden方法可以判斷檔案按是否為隱藏檔案, ,         List<String> lines = Files.readAllLines(Paths.get("src/FilesTest.java"), Charset.forName("UTF-8"));, //        readAllLines方法是逐行讀取問價的內容,後面一個引數是給定字符集,返回一個String的集合, ,         System.out.println(lines);, ,         System.out.println("FilesTest.java的大小為"+Files.size(Paths.get("src/FilesTest.java")));,         List<String> peom = new ArrayList<>();,         peom.add("aaa");,         peom.add("bbb");,         Files.write(Paths.get("pome.txt"), peom,Charset.forName("gbk"));,         FileStore cStore = Files.getFileStore(Paths.get("C:"));,         System.out.println("共有空間"+cStore.getTotalSpace());,         System.out.println("可用空間"+cStore.getUsableSpace());,     }, }]
    //        FilesTest.java的大小為1476
    //            共有空間161877315584
    //     可用空間131081998336