java common io_Java之Apache Commons-IO使用精讲
Commons IO是針對開發(fā)IO流功能的工具類庫。
主要包括六個區(qū)域:
工具類——使用靜態(tài)方法執(zhí)行共同任務(wù)
輸入——用于InputStream和Reader實現(xiàn)
輸出——用于OutputStream和Writer實現(xiàn)
過濾器——各種文件過濾器實現(xiàn)
比較器——各種文件的java.util.Comparator實現(xiàn)
文件監(jiān)聽器——監(jiān)聽文件系統(tǒng)事件的組件
工具類
IOUtils
該工具類可能是平時使用得最多的工具類了。
IOUtils包含處理讀、寫和復(fù)制的工具方法。方法對InputStream、OutputStream、Reader和Writer起作用。
例如,從一個URL讀取字節(jié)的任務(wù),并且打印它們:
public static void main(String[] args) throwsException {//從網(wǎng)絡(luò)上讀取一個網(wǎng)頁資源
InputStream in = new URL("http://commons.apache.org").openStream();try{
InputStreamReader inR= newInputStreamReader(in);
BufferedReader buf= newBufferedReader(inR);
String line;while ((line = buf.readLine()) != null) {
System.out.println(line);
}
}finally{if (in != null) {
in.close();
}
}
}//結(jié)果://控制臺打印出了這個網(wǎng)頁的所有內(nèi)容
使用IOUtils:
public static void main(String[] args) throwsException {//從網(wǎng)絡(luò)上讀取一個網(wǎng)頁資源
try (InputStream in = new URL("http://commons.apache.org").openStream()) {
System.out.println(IOUtils.toString(in, StandardCharsets.UTF_8));
}//finally {//IOUtils.closeQuietly(in);//}
}
主要方式介紹:
buffer:一句話可以吧inputStream、outputStream、Reader、Witter等包裝成帶緩沖區(qū)的流,提高效率
closeQuietly:可以關(guān)閉各種流、socket等任何closeable的實例(不過官方推薦使用try-with-resources來代替)
contentEquals:比較兩個InputStream或者兩個Reader里面的內(nèi)容(字節(jié)流)是否完全相同
public static void main(String[] args) throwsException {try (InputStream in1 = new URL("http://commons.apache.org").openStream(); InputStream in2 = new URL("http://commons.apache.org").openStream()) {
System.out.println(in1.equals(in2));//false
System.out.println(IOUtils.contentEquals(in1, in2)); //true
}
}
備注:contentEqualsIgnoreEOL(final Reader input1, final Reader input2) 該方法會忽略ignoring EOL characters
copy:流的互相拷貝。可以將輸入流拷到輸出流。copy(final InputStream input, final OutputStream output, final int bufferSize),Reader拷貝到Writer等等
copyLarge:當你的流拷貝的是大文件(一般大于2G級別),請使用此方法拷貝
lineIterator:BufferedReader 通常在只有讀到空格或者換行符時才會結(jié)束讀取,攻擊者很容易構(gòu)內(nèi)存攻擊導(dǎo)致系統(tǒng)癱瘓,出于安全考慮這里推薦使用io包的LineIterator,并且其在性能上也優(yōu)于普通流。
lineIterator(final InputStream input, finalCharset encoding)
lineIterator(final InputStream input, finalString encoding)
lineIterator(final Reader reader)
public static void main(String[] args) throwsException {try (InputStream in1 = new URL("http://commons.apache.org").openStream()) {
LineIterator lineIterator=IOUtils.lineIterator(in1, StandardCharsets.UTF_8);while(lineIterator.hasNext()) {
lineIterator.nextLine();
}
lineIterator.close();
}
}
read、readFully:把輸入流的東西讀取添加到第二個參數(shù)中的字節(jié)數(shù)組里
readLines:不解釋
resourceToByteArray、resourceToString:直接傳入一個文件的路徑,讀取進來
toBufferedInputStream:把普通的inputStream轉(zhuǎn)換成帶緩沖區(qū)的,返回一個新的InputStream
toByteArray:吧輸入流轉(zhuǎn)換到字節(jié)數(shù)組
toCharArray:
toInputStream:吧字符、字符串等等直接讀到流里
toString:強大的方法,可以吧各種輸出流讀成一個串
write、writeChunked、writeLines:把傳入的字節(jié)數(shù)組,寫入到輸出流里(可指定編碼)
各種常用的常量:
public static final char DIR_SEPARATOR_UNIX = '/';public static final char DIR_SEPARATOR_WINDOWS = '\\';/*** The system directory separator character. 系統(tǒng)文件夾的分隔符 通用的*/
public static final char DIR_SEPARATOR =File.separatorChar;/*** The Unix line separator string. 換行符*/
public static final String LINE_SEPARATOR_UNIX = "\n";//winows換行符
public static final String LINE_SEPARATOR_WINDOWS = "\r\n";/*** The system line separator string. 通用的換行符*/
public static final String LINE_SEPARATOR;
FilenameUtils
FilenameUtils類包含工具方法不需要使用File對象就可以操作文件名。該類致力于屏蔽Unix和Windows之間的不同,避免這些環(huán)境之間的轉(zhuǎn)換(例如,從開發(fā)到生產(chǎn))。 開發(fā)在windows、生產(chǎn)在Linux
一般使用較少,這里不做過多介紹.
FileSystemUtils:2.6版本已經(jīng)廢棄。推薦使用JDK自己的FileStore代替
總結(jié)
以上是生活随笔為你收集整理的java common io_Java之Apache Commons-IO使用精讲的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python土木_土木和结构工程师用Py
- 下一篇: java代码数据库添加操作_java连接