Guava---文件操作Files


文章目錄

guava復制文件

java NIO復制文件

移動文件

讀取文件內容(一行一行讀)

讀取文件內容(按條件讀取)

計算文件hashcode (可對比兩個文件是否一樣)

寫文件

獲取某路徑目錄

獲取某路徑目錄(自定義過濾)

guava復制文件

private static String from = "D:\\自定義代碼\\Guava\\guava\\src\\1.txt";
private static String to = "D:\\自定義代碼\\Guava\\guava\\src\\2.txt";

Files.copy(new File(from),new File(to));

java NIO復制文件

java.nio.file.Files.copy(Paths.get(from),
                Paths.get(to), StandardCopyOption.REPLACE_EXISTING);

移動文件

//to若存在,將被刪除,重新生成
Files.move(new File(from),new File(to));

讀取文件內容(一行一行讀)

List<String> strings = Files.readLines(new File(to), Charsets.UTF_8);

讀取文件內容(按條件讀取)

 

private static void guavaReadFilesProcess() throws IOException {
        LineProcessor<List<String>> lineProcessor = new LineProcessor<List<String>>() {
            List<String> list = new ArrayList<>();
            @Override
            public boolean processLine(String s) throws IOException {
                System.out.println("讀到內容:" + s);
                list.add("前綴-" + s);
                return true;   //return false,不再讀取下面內容
            }

            @Override
            public List<String> getResult() {
                System.out.println("返回結果: "+ list);
                return list;
            }
        };
        List<String> strings = Files.asCharSource(new File(to), Charsets.UTF_8).readLines(lineProcessor);
        System.out.println(strings);
    }
          /**
         *  讀到內容:java
         *  讀到內容:C++
         *  讀到內容:PHP
         *  返回結果: [前綴-java, 前綴-C++, 前綴-PHP]
         *  [前綴-java, 前綴-C++, 前綴-PHP]
         */

計算文件hashcode (可對比兩個文件是否一樣)

//Hashing.md5();Hashing.sha256()
HashCode hash = Files.asByteSource(new File(to)).hash(Hashing.sha512());

寫文件

         String path = "D:\\自定義代碼\\Guava\\guava\\src\\2.txt";
        File file = new File(path);
        Files.asCharSink(file, Charsets.UTF_8).write("hhhh");
        String read = Files.asCharSource(file, Charsets.UTF_8).read();
        System.out.println("讀取: "+ read);

        //追加內容
        Files.asCharSink(file, Charsets.UTF_8, FileWriteMode.APPEND).write("\nhhhh2");
        String read2 = Files.asCharSource(file, Charsets.UTF_8).read();
        System.out.println("讀取: "+ read2);

獲取某路徑目錄

public static void main(String[] args) {
        String path = "D:\\自定義代碼\\Guava\\guava\\src\\main";
        File file = new File(path);
        //獲取path下子目錄
        Iterable<File> childrens = Files.fileTreeTraverser().children(file);
        for (File children : childrens) {
            System.out.println("子目錄: " + children);

        }
        //獲取path下所有目錄  preOrderTraversal postOrderTraversal順序不一樣
        FluentIterable<File> files = Files.fileTreeTraverser().preOrderTraversal(file);
        for (File file1 : files) {
            System.out.println("全目錄: " + file1);
        }
        /**
         子目錄: D:\自定義代碼\Guava\guava\src\main\java
        */

獲取某路徑目錄(自定義過濾)

public static void main(String[] args) {
        String path = "D:\\自定義代碼\\Guava\\guava\\src\\main";
        File file = new File(path);                //preOrderTraversal postOrderTraversal順序不一樣
        FluentIterable<File> files = Files.fileTreeTraverser().preOrderTraversal(file).filter(new Predicate<File>() {
            @Override
            public boolean apply(@Nullable File input) {
                return input.isFile();  //只要文件
            }
        });
        for (File file1 : files) {
            System.out.println(file1);
        }
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM