網站首頁 編程語言 正文
- 在這里插入代碼片我要返回一個字符串,怎么辦?我們必須去看看r對象能夠讀取什么?兩種讀取方法,一次讀取一個字符或一次讀取一個字符數組。那么,我們要返回一個字符串嗎,用哪個方法比較好呢?我們很容易想到字符數組比較好,但是問題來了,就是這個字符數組的長度是多長呢?
- 根本就沒有辦法定義數組的長度,你定義多長都不合適。所以只能選擇一次讀取一個字符。但是呢,使用這種方式的時候,我們再讀取下一個字符的時候,上一個字符就丟失了。所以,我們又應該定義一個臨時存儲空間把讀過的字符給存儲起來。
- 這個用誰比較合適呢?數組、集合、字符串緩沖區三個可供選擇。
- 經過分析,最終選擇字符串緩沖區對象。并且使用的是StringBuilder。
測試
public class MyBufferedReaderDemo {
public static void main(String[] args) throws IOException {
MyBufferedReader mbr = new MyBufferedReader(new FileReader("my.txt"));
String line = null;
while ((line = mbr.readLine()) != null) {
System.out.println(line);
}
mbr.close();
}
}
MyBufferedReader
/**
* 用Reader模擬BufferedReader的readline()功能
* <p>
* readLine()一次讀取一行根據換行符判斷是否結束,只返回內容,不返回換行符
*/
public class MyBufferedReader {
private Reader r;
public MyBufferedReader(Reader r) {
this.r = r;
}
/**
* 寫一個方法,返回值是一個字符串。
*/
public String readLine() throws IOException {
StringBuilder sb = new StringBuilder();
//麻煩的是判斷結束,但是結束之前應該是一直讀取,直到-1
int ch = 0;
while ((ch = r.read()) != -1) {
if (ch == '\r') {
continue;
}
if (ch == '\n') {
return sb.toString();
} else {
sb.append((char) ch);
}
}
//為了防止數據丟失,判斷sb的長度不能大于0
if (sb.length() > 0) {
return sb.toString();
}
return null;
}
/**
* 寫一個關閉方法
*/
public void close() throws IOException {
this.r.close();
}
}
原文鏈接:https://blog.csdn.net/qq_41834086/article/details/107631410
- 上一篇:沒有了
- 下一篇:沒有了
相關推薦
- 2022-09-13 Python實現創建模塊的方法詳解_python
- 2022-08-16 一文輕松了解Python中類的繼承_python
- 2022-04-28 C++實現班級成績管理系統_C 語言
- 2022-09-09 Go語言中DateTime的用法介紹_Golang
- 2022-06-25 Python實現漸變色的水平堆疊圖_python
- 2022-05-16 C++Smart?Pointer?智能指針詳解_C 語言
- 2022-12-05 Linux系統查看服務器帶寬及網絡使用情況的具體方法_服務器其它
- 2022-02-17 出現Presentation Error的解決方法
- 欄目分類
-
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支