文章目錄
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); } }