技識訓,該賞
關注+一鍵三連(點贊,評論,收藏)再看,養成好習慣
hutool實戰(帶你掌握里面的各種工具)目錄
用途:IO工具類(獲取getReader and getWriter)
使用場景
IO工具類只是輔助流的讀寫,并不負責關閉流,原因是流可能被多次讀寫,讀寫關閉后容易造成問題,
(獲取getReader and getWriter)
(獲取getReader and getWriter)
(獲取getReader and getWriter)
專案參考
此博文的依據:hutool-5.6.5版本原始碼
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-core</artifactId>
<version>5.6.5</version>
</dependency>
方法摘要
| 方法 | 描述 |
|---|---|
| cn.hutool.core.io.IoUtil.getUtf8Reader(java.io.InputStream) |
獲得一個檔案讀取器,默認使用UTF-8編碼
|
| cn.hutool.core.io.IoUtil.getReader(java.io.InputStream, java.lang.String) |
獲得一個檔案讀取器
|
| cn.hutool.core.io.IoUtil.getReader(cn.hutool.core.io.BOMInputStream) |
從{@link BOMInputStream}中獲取Reader
|
| cn.hutool.core.io.IoUtil.getReader(java.io.InputStream, java.nio.charset.Charset) |
獲得一個Reader
|
| cn.hutool.core.io.IoUtil.getReader(java.io.Reader) |
獲得{@link BufferedReader}<br> 如果是{@link BufferedReader}強轉回傳,否則新建,如果提供的Reader為null回傳null
|
| cn.hutool.core.io.IoUtil.getPushBackReader(java.io.Reader, int) |
獲得{@link PushbackReader}<br> 如果是{@link PushbackReader}強轉回傳,否則新建
|
| cn.hutool.core.io.IoUtil.getUtf8Writer(java.io.OutputStream) |
獲得一個Writer,默認編碼UTF-8
|
| cn.hutool.core.io.IoUtil.getWriter(java.io.OutputStream, java.lang.String) |
獲得一個Writer
|
| cn.hutool.core.io.IoUtil.getWriter(java.io.OutputStream, java.nio.charset.Charset) |
獲得一個Writer
|
方法明細
方法名稱:cn.hutool.core.io.IoUtil.getUtf8Reader(java.io.InputStream)
方法描述
獲得一個檔案讀取器,默認使用UTF-8編碼
支持版本及以上
5.1.6
引數描述:
| 引數名 | 描述 |
|---|---|
| InputStream in |
in 輸入流
|
回傳值:
BufferedReader物件
參考案例:
File src = new File("C:\\Users\\Administrator\\Desktop\\xuzhu/copyTest1.txt") ;
FileInputStream fw = null;
BufferedReader bufferedReader = null;
try {
//創建流
fw = new FileInputStream(src);
//新new BufferedReader物件,記得關倍訓收
bufferedReader = IoUtil.getUtf8Reader(fw);
String str = null;
//到達流末尾, 就回傳null
while((str = bufferedReader.readLine()) != null){
System.out.println(str);
}
} catch (IOException e) {
//拋出一個運行時例外(直接停止掉程式)
throw new RuntimeException("運行時例外",e);
}finally {
try {
//如果是空的 說明流創建失敗 失敗了不需要關閉
if (fw != null) {
fw.close();
}
} catch (Exception e) {
//關閉資源失敗 停止程式
throw new RuntimeException("關閉資源失敗");
}finally {
try {
if (bufferedReader != null) {
bufferedReader.close();
}
} catch (Exception e) {
throw new RuntimeException("關閉資源失敗");
}
}
}


原始碼決議:
鏈接:待補充
方法明細
方法名稱:cn.hutool.core.io.IoUtil.getReader(java.io.InputStream, java.lang.String)
方法描述
獲得一個檔案讀取器
支持版本及以上
引數描述:
| 引數名 | 描述 |
|---|---|
| InputStream in |
in 輸入流
|
| String charsetName |
charsetName 字符集名稱
|
回傳值:
BufferedReader物件
參考案例:
File src = new File("C:\\Users\\Administrator\\Desktop\\xuzhu/copyTest1.txt") ;
FileInputStream fw = null;
BufferedReader bufferedReader = null;
try {
//創建流
fw = new FileInputStream(src);
//新new BufferedReader物件,記得關倍訓收
bufferedReader = IoUtil.getReader(fw, "UTF-8");
String str = null;
//到達流末尾, 就回傳null
while((str = bufferedReader.readLine()) != null){
System.out.println(str);
}
} catch (IOException e) {
//拋出一個運行時例外(直接停止掉程式)
throw new RuntimeException("運行時例外",e);
} finally {
try {
//如果是空的 說明流創建失敗 失敗了不需要關閉
if (fw != null) {
fw.close();
}
} catch (Exception e) {
//關閉資源失敗 停止程式
throw new RuntimeException("關閉資源失敗");
} finally {
try {
if (bufferedReader != null) {
bufferedReader.close();
}
} catch (Exception e) {
throw new RuntimeException("關閉資源失敗");
}
}
}
原始碼決議:
鏈接:待補充
方法明細
方法名稱:cn.hutool.core.io.IoUtil.getReader(cn.hutool.core.io.BOMInputStream)
方法描述
從{@link BOMInputStream}中獲取Reader
支持版本及以上
5.5.8
引數描述:
| 引數名 | 描述 |
|---|---|
| BOMInputStream in |
in {@link BOMInputStream}
|
回傳值:
{@link BufferedReader}
參考案例:
File src = new File("C:\\Users\\Administrator\\Desktop\\xuzhu/copyTest1.txt") ;
//BOM(Byte Order Mark)標識檔案的編碼,實際大小比資料多3個位元組
//??直接在記事本編輯資料保存,默認會給你的資料添加上BOM頭,使你的檔案的大小比實際資料多3個位元組(utf-8編碼)
BOMInputStream fw = null;
BufferedReader bufferedReader = null;
try {
//創建流
fw = new BOMInputStream(new FileInputStream(src));
//新new BufferedReader物件,記得關倍訓收
bufferedReader = IoUtil.getReader(fw);
String str = null;
//到達流末尾, 就回傳null
while((str = bufferedReader.readLine()) != null){
System.out.println(str);
}
} catch (IOException e) {
//拋出一個運行時例外(直接停止掉程式)
throw new RuntimeException("運行時例外",e);
} finally {
try {
//如果是空的 說明流創建失敗 失敗了不需要關閉
if (fw != null) {
fw.close();
}
} catch (Exception e) {
//關閉資源失敗 停止程式
throw new RuntimeException("關閉資源失敗");
}finally {
try {
if (bufferedReader != null) {
bufferedReader.close();
}
} catch (Exception e) {
throw new RuntimeException("關閉資源失敗");
}
}
}
原始碼決議:
鏈接:待補充
方法明細
方法名稱:cn.hutool.core.io.IoUtil.getReader(java.io.InputStream, java.nio.charset.Charset)
方法描述
獲得一個Reader
支持版本及以上
引數描述:
| 引數名 | 描述 |
|---|---|
| InputStream in |
in 輸入流
|
| Charset charset |
charset 字符集
|
回傳值:
BufferedReader物件
參考案例:
File src = new File("C:\\Users\\Administrator\\Desktop\\xuzhu/copyTest1.txt") ;
FileInputStream fw = null;
BufferedReader bufferedReader =null;
try {
//創建流
fw = new FileInputStream(src);
//新new BufferedReader物件,記得關倍訓收
bufferedReader = IoUtil.getReader(fw,CharsetUtil.CHARSET_UTF_8);
String str = null;
//到達流末尾, 就回傳null
while((str = bufferedReader.readLine()) != null){
System.out.println(str);
}
} catch (IOException e) {
//拋出一個運行時例外(直接停止掉程式)
throw new RuntimeException("運行時例外",e);
} finally {
try {
//如果是空的 說明流創建失敗 失敗了不需要關閉
if (fw != null) {
fw.close();
}
} catch (Exception e) {
//關閉資源失敗 停止程式
throw new RuntimeException("關閉資源失敗");
}finally {
try {
if (bufferedReader != null) {
bufferedReader.close();
}
} catch (Exception e) {
throw new RuntimeException("關閉資源失敗");
}
}
}
原始碼決議:
鏈接:待補充
方法明細
方法名稱:cn.hutool.core.io.IoUtil.getReader(java.io.Reader)
方法描述
獲得{@link BufferedReader}<br>
如果是{@link BufferedReader}強轉回傳,否則新建,如果提供的Reader為null回傳null
支持版本及以上
3.0.9
引數描述:
| 引數名 | 描述 |
|---|---|
| Reader reader |
reader 普通Reader,如果為null回傳null
|
回傳值:
{@link BufferedReader} or null
參考案例:
StringReader stringReader = null;
BufferedReader bufferedReader =null;
try {
//創建流
stringReader = new StringReader("1hello 小虛竹\n2hello 小虛竹");
//新new BufferedReader物件,記得關倍訓收
bufferedReader = IoUtil.getReader(stringReader);
String str = null;
//到達流末尾, 就回傳null
while((str = bufferedReader.readLine()) != null){
System.out.println(str);
}
} catch (IOException e) {
//拋出一個運行時例外(直接停止掉程式)
throw new RuntimeException("運行時例外",e);
} finally {
try {
//如果是空的 說明流創建失敗 失敗了不需要關閉
if (stringReader != null) {
stringReader.close();
}
} catch (Exception e) {
//關閉資源失敗 停止程式
throw new RuntimeException("關閉資源失敗");
}finally {
try {
if (bufferedReader != null) {
bufferedReader.close();
}
} catch (Exception e) {
throw new RuntimeException("關閉資源失敗");
}
}
}

原始碼決議:
鏈接:待補充
方法明細
方法名稱:cn.hutool.core.io.IoUtil.getPushBackReader(java.io.Reader, int)
方法描述
獲得{@link PushbackReader}<br>
如果是{@link PushbackReader}強轉回傳,否則新建
支持版本及以上
3.1.0
引數描述:
| 引數名 | 描述 |
|---|---|
| Reader reader |
reader 普通Reader
|
| int pushBackSize |
pushBackSize 推后的byte數
|
回傳值:
{@link PushbackReader}
參考案例:
StringReader stringReader = null;
PushbackReader pushbackReader = null;
try {
stringReader = new StringReader("123456789");
//PushbackReader允許呼叫者將一些資料源本身不包含的字符插入到流的任意位置
pushbackReader = IoUtil.getPushBackReader(stringReader,100);
StringBuilder stringBuilder = new StringBuilder();
char[] buff = new char[3];
//第一步,首先讀取 “123”
int n = pushbackReader.read(buff, 0, 3);
stringBuilder.append(buff);
System.out.println("第一步,讀取了 " + n + " 個字符:");
System.out.println(buff);
//第二步,unread:abc, de, fghi
pushbackReader.unread(new char[]{'a', 'b', 'c'});
pushbackReader.unread(new char[]{'d', 'e'});
pushbackReader.unread(new char[]{'f', 'g', 'h', 'i'});
int c = 0;
while ((c = pushbackReader.read()) != -1){
stringBuilder.append((char) c);
}
System.out.println("最終讀取的資料:" + stringBuilder.toString());
}catch (IOException e){
//拋出一個運行時例外(直接停止掉程式)
throw new RuntimeException("運行時例外",e);
} finally {
try {
//如果是空的 說明流創建失敗 失敗了不需要關閉
if (stringReader != null) {
stringReader.close();
}
} catch (Exception e) {
//關閉資源失敗 停止程式
throw new RuntimeException("關閉資源失敗");
}finally {
try {
if (pushbackReader != null) {
pushbackReader.close();
}
} catch (Exception e) {
throw new RuntimeException("關閉資源失敗");
}
}
}

原始碼決議:
鏈接:待補充
方法明細
方法名稱:cn.hutool.core.io.IoUtil.getUtf8Writer(java.io.OutputStream)
方法描述
獲得一個Writer,默認編碼UTF-8
支持版本及以上
5.1.6
引數描述:
| 引數名 | 描述 |
|---|---|
| OutputStream out |
out 輸入流
|
回傳值:
OutputStreamWriter物件
參考案例:
File dest = new File("C:\\Users\\Administrator\\Desktop\\xuzhu/getUtf8WriterTest.txt") ;
FileOutputStream outputStream = null;
OutputStreamWriter outputStreamWriter = null;
try {
//創建流
outputStream = new FileOutputStream(dest);
//新new OutputStreamWriter物件,記得關倍訓收
outputStreamWriter = IoUtil.getUtf8Writer(outputStream);
String content = "1hello 小虛竹\n2hello 小虛竹";
int c;
for (int i = 0; i < content.length(); i++) {
c = content.charAt(i);
outputStreamWriter.write((char) c);
}
outputStreamWriter.flush();
} catch (IOException e) {
//拋出一個運行時例外(直接停止掉程式)
throw new RuntimeException("運行時例外",e);
} finally {
try {
//如果是空的 說明流創建失敗 失敗了不需要關閉
if (outputStream != null) {
outputStream.close();
}
} catch (Exception e) {
//關閉資源失敗 停止程式
throw new RuntimeException("關閉資源失敗");
}finally {
try {
if (outputStreamWriter != null) {
outputStreamWriter.close();
}
} catch (Exception e) {
throw new RuntimeException("關閉資源失敗");
}
}
}

原始碼決議:
鏈接:待補充
方法明細
方法名稱:cn.hutool.core.io.IoUtil.getWriter(java.io.OutputStream, java.lang.String)
方法描述
獲得一個Writer
支持版本及以上
引數描述:
| 引數名 | 描述 |
|---|---|
| OutputStream out |
out 輸入流
|
| String charsetName |
charsetName 字符集
|
回傳值:
OutputStreamWriter物件
參考案例:
File dest = new File("C:\\Users\\Administrator\\Desktop\\xuzhu/getWriterTest.txt") ;
FileOutputStream outputStream = null;
OutputStreamWriter outputStreamWriter = null;
try {
//創建流
outputStream = new FileOutputStream(dest);
//新new OutputStreamWriter物件,記得關倍訓收
outputStreamWriter = IoUtil.getWriter(outputStream,"UTF-8");
String content = "1hello 小虛竹\n2hello 小虛竹";
int c;
for (int i = 0; i < content.length(); i++) {
c = content.charAt(i);
outputStreamWriter.write((char) c);
}
outputStreamWriter.flush();
} catch (IOException e) {
//拋出一個運行時例外(直接停止掉程式)
throw new RuntimeException("運行時例外",e);
} finally {
try {
//如果是空的 說明流創建失敗 失敗了不需要關閉
if (outputStream != null) {
outputStream.close();
}
} catch (Exception e) {
//關閉資源失敗 停止程式
throw new RuntimeException("關閉資源失敗");
}finally {
try {
if (outputStreamWriter != null) {
outputStreamWriter.close();
}
} catch (Exception e) {
throw new RuntimeException("關閉資源失敗");
}
}
}

原始碼決議:
鏈接:待補充
方法明細
方法名稱:cn.hutool.core.io.IoUtil.getWriter(java.io.OutputStream, java.nio.charset.Charset)
方法描述
獲得一個Writer
支持版本及以上
引數描述:
| 引數名 | 描述 |
|---|---|
| OutputStream out |
out 輸入流
|
| Charset charset |
charset 字符集
|
回傳值:
OutputStreamWriter物件
參考案例:
File dest = new File("C:\\Users\\Administrator\\Desktop\\xuzhu/getWriterTest1.txt") ;
FileOutputStream outputStream = null;
OutputStreamWriter outputStreamWriter = null;
try {
//創建流
outputStream = new FileOutputStream(dest);
//新new OutputStreamWriter物件,記得關倍訓收
outputStreamWriter = IoUtil.getWriter(outputStream,CharsetUtil.CHARSET_UTF_8);
String content = "1hello 小虛竹\n2hello 小虛竹";
int c;
for (int i = 0; i < content.length(); i++) {
c = content.charAt(i);
outputStreamWriter.write((char) c);
}
outputStreamWriter.flush();
} catch (IOException e) {
//拋出一個運行時例外(直接停止掉程式)
throw new RuntimeException("運行時例外",e);
} finally {
try {
//如果是空的 說明流創建失敗 失敗了不需要關閉
if (outputStream != null) {
outputStream.close();
}
} catch (Exception e) {
//關閉資源失敗 停止程式
throw new RuntimeException("關閉資源失敗");
}finally {
try {
if (outputStreamWriter != null) {
outputStreamWriter.close();
}
} catch (Exception e) {
throw new RuntimeException("關閉資源失敗");
}
}
}

原始碼決議:
鏈接:待補充
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/286641.html
標籤:其他
上一篇:電子學會圖形化scratch編程等級考試三級真題答案決議【選擇題】2020-9
下一篇:入門C語言——初識C語言(2)
