IOUtils和FileUtils的學習筆記


pom文件導入依賴import org.apache.commons.io.FileUtils;

<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.5</version>
</dependency>

https://blog.csdn.net/quanzhanjavabiji/article/details/73936240

FieUtils類中常用方法的介紹

打開FileUtils的api文檔,我們抽出一些工作中比較常用的方法,進行總結和講解。總結如下:

cleanDirectory:清空目錄,但不刪除目錄

contentEquals:比較兩個文件的內容是否相同

copyDirectory:將一個目錄內容拷貝到另一個目錄。可以通過FileFilter過濾需要拷貝的文件。

copyFile:將一個文件拷貝到一個新的地址

copyFileToDirectory:將一個文件拷貝到某個目錄下

copyInputStreamToFile:將一個輸入流中的內容拷貝到某個文件

deleteDirectory:刪除目錄

deleteQuietly:刪除文件

listFiles:列出指定目錄下的所有文件

openInputSteam:打開指定文件的輸入流

readFileToString:將文件內容作為字符串返回

readLines:將文件內容按行返回到一個字符串數組中

size:返回文件或目錄的大小

write:將字符串內容直接寫到文件中

writeByteArrayToFile: 將字節數組內容寫到文件中

writeLines:將容器中的元素的toString方法返回的內容依次寫入文件中

writeStringToFile:將字符串內容寫到文件中

 

代碼演示

【示例1】:讀出某個文件的內容,並打印在控制台上(只需一行代碼!)

package com.bjsxt.test.fileutils;

import java.io.File;

import org.apache.commons.io.FileUtils;

 

public class Demo01 {

     public static void main(String[] args) throws Exception {

            String content = FileUtils.readFileToString(new File("d:/a.txt"),"gbk");

            System.out.println(content);

        }

}

 


示例1  運行效果圖

【示例2】:目錄拷貝,並且使用FileFilter過來目錄和文件名字html結尾的文件。

package com.bjsxt.test.fileutils;

 

import java.io.File;

import java.io.FileFilter;

import org.apache.commons.io.FileUtils;

 

 

public class Demo02 {

    public static void main(String[] args) throws Exception {

          FileUtils.copyDirectory(new File("d:/aaa"), new File("d:/bbb"), new FileFilter() {

            @Override

            public boolean accept(File pathname) {

                

                //拷貝目錄或html結尾的文件

                if(pathname.isDirectory()||pathname.getName().endsWith("html")){

                    return true;

                }else{

                    return false;

                }

            }

        });

    }

}

 


 示例2 目錄拷貝結果圖

IOUtils妙用

打開IOUtils的api文檔,我們發現他的方法大部分都是重載的。所以,我們理解他的方法並不是難事。因此,對於他方法的用法總結如下:

buffer方法:將傳入的流進行包裝,變成緩沖流。並可以通過參數指定緩沖大小。

closeQueitly方法:關閉流

contentEquals方法:比較兩個流中的內容是否一致

copy方法:將輸入流中的內容拷貝到輸出流中,並可以指定字符編碼。

copyLarge方法:將輸入流中的內容拷貝到輸出流中,適合大於2G內容的拷貝。

lineIterator方法:返回可以迭代每一行內容的迭代器

read方法:將輸入流中的部分內容讀入到字節數組中

readFully方法:將輸入流中的所有內容讀入到字節數組中

readLine方法:讀入輸入流內容中的一行

toBufferedInputStream,toBufferedReader:將輸入轉為帶緩存的輸入流

toByteArray,toCharArray:將輸入流的內容轉為字節數組、字符數組。

toString:將輸入流或數組中的內容轉化為字符串

write方法:向流里面寫入內容

writeLine方法:向流里面寫入一行內容

我們沒有必要對每個方法做測試,只是演示一下讀入d:/a.txt文件內容到程序中,並轉成String對象,打印出來。

package com.bjsxt.test.fileutils;

 

import java.io.*;

 

import org.apache.commons.io.IOUtils;

 

public class Demo03 {

    public static void main(String[] args) throws Exception {

        String content = IOUtils.toString(new FileInputStream("d:/a.txt"),"gbk");

        System.out.println(content);

    }

}

 readLines                                                                                                                 

readLines方法可以從流中讀取內容,並轉換為String的list

readLines(inputstream) readLines(inputstream,charset) readLines(inputstream,encoding) readLines(reader)

這個方法極大簡化了之前原始的讀取方法:

 @Test public void readLinesTest(){ try{ InputStream is = new FileInputStream("D://test1.txt"); List<String> lines = IOUtils.readLines(is); for(String line : lines){ System.out.println(line); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }


免責聲明!

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



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