Java怎麼實現有緩衝的輸入輸出流
缓冲是 I/O 的一种性能优化。缓冲流为 I/O 流增加了内存缓冲区。
BufferedInputStream类 与 BufferedOutputStream类
BufferedInputStream类 可以对所有InputStream的子类进行缓冲区的包装,以达到性能的优化。
BufferedOutputStream类 中的 flush()方法 被用来把缓冲区的字节写入到文件中,并清空缓存。
BufferedInputStream类的构造方法:
构造方法 | 介绍 |
---|---|
BufferedInputStream(FileInputStream fileInputStream); | 创建一个带有32个字节的缓冲输入流。 |
BufferedInputStream(FileInputStream fileInputStream , int size); | 按指定的大小来创建缓冲输入流。 |
BufferedOutputStream类的构造方法:
构造方法 | 介绍 |
---|---|
BufferedOutputStream(FileOutputStream fileOutputStream); | 创建一个带有32个字节的缓冲输出流。 |
BufferedOutputStream(FileOutputStream fileOutputStream , int size); | 按指定的大小来创建缓冲输出流。 |
BufferedInputStream类 与 BufferedOutputStream类 实例:
import java.io.*; public class Demo4 { public static void main(String[] args) { /** * 缓冲字节输入流(BufferedInputStream) * 特点:提高效率 */ File file = new File("C:\\JAVA_API_1.7中文.chm"); BufferedInputStream bufferedInputStream = null;//创建缓冲字节流 FileInputStream fileInputStream = null; long stare = System.currentTimeMillis();//获得当前流开始时的毫秒值 try { fileInputStream=new FileInputStream(file); bufferedInputStream = new BufferedInputStream(fileInputStream);//将文件字节流包装成缓冲字节流 byte by[] = new byte[1024];//缓冲区字节数组(这个缓冲区与Buffered不同) while ((bufferedInputStream.read(by))!=-1){//使用缓冲字节流读取数据 } long end = System.currentTimeMillis();//获得当前流结束时的毫秒值 System.out.println("运行经历的毫秒数:"+(end - stare)); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { if (fileInputStream!=null){ try { fileInputStream.close(); } catch (IOException e) { e.printStackTrace(); } } if (bufferedInputStream!=null){ try { bufferedInputStream.close(); } catch (IOException e) { e.printStackTrace(); } } } /** * 缓冲字节输出流(BufferedOutputStream) * 特点:提高效率 */ File file1 = new File("C:\\Word.txt"); BufferedOutputStream bufferedOutputStream = null;//创建缓冲字节输出流 FileOutputStream fileOutputStream = null; try { fileOutputStream=new FileOutputStream(file1); bufferedOutputStream=new BufferedOutputStream(fileOutputStream);//将文件输出流包装到缓冲字节输出流 String str = "深山踏红叶,耳畔闻鹭鸣。"; byte by[] = str.getBytes(); bufferedOutputStream.write(by); //<*> 使用缓冲字节输出流时,要多进行刷新操作,避免等待,有数据时就将数据写入文件当中 <*> bufferedOutputStream.flush();//刷新(强制将缓冲区数据写入文件中,即使缓冲区没有写满) } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { if (fileOutputStream!=null){ try { fileOutputStream.close(); } catch (IOException e) { e.printStackTrace(); } } if (bufferedOutputStream!=null){ try { bufferedOutputStream.close(); } catch (IOException e) { e.printStackTrace(); } } } } }
BufferedReader类 与 BufferedWriter类
BufferedReader类 与 BufferedWriter类 分别继承了 Reader类 与 Writer类,这两个类同样具有内部缓冲机制,并以行为单位输入/输出。
BufferedReader类常用方法:
BufferedWriter类常用方法:
BufferedReader类 与 BufferedWriter类 实例:
import java.io.*; public class Demo6 { public static void main(String[] args) { File file = new File("C:\\Word.txt"); /** * 文件缓冲字符输出流(BufferedWriter) */ FileWriter fileWriter = null;//创建文件字符输出流 BufferedWriter bufferedWriter = null;//创建文件缓冲字符输出流 try { fileWriter = new FileWriter(file); bufferedWriter = new BufferedWriter(fileWriter);//将文件字符输出流包装成文件缓冲字符输出流 String str1 = "神里"; String str2 = "绫华"; bufferedWriter.write(str1);//第一行数据 bufferedWriter.newLine();//创建一个新行 bufferedWriter.write(str2);//第二行数据 } catch (IOException e) { e.printStackTrace(); }finally {//<*> 注意:流的关闭顺序,先创建的后关闭。 <*> if (bufferedWriter!=null){ try { bufferedWriter.close(); } catch (IOException e) { e.printStackTrace(); } } if (fileWriter!=null){ try { fileWriter.close(); } catch (IOException e) { e.printStackTrace(); } } } /** * 文件缓冲字符输入流(BufferedReader) */ FileReader fileReader = null; BufferedReader bufferedReader = null; try { fileReader = new FileReader(file); bufferedReader = new BufferedReader(fileReader);//将文件字符输入流包装成文件缓冲字符输入流 String tmp = null;//临时变量 int i = 1;//计数器 while ((tmp = bufferedReader.readLine())!=null){//循环读取文件中的内容 System.out.println("第"+i+"行:"+tmp); i++; } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { if (bufferedReader!=null){ try { bufferedReader.close(); } catch (IOException e) { e.printStackTrace(); } } if (fileReader!=null){ try { fileReader.close(); } catch (IOException e) { e.printStackTrace(); } } } } }
以上是Java怎麼實現有緩衝的輸入輸出流的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

PHP是一種廣泛應用於服務器端的腳本語言,特別適合web開發。 1.PHP可以嵌入HTML,處理HTTP請求和響應,支持多種數據庫。 2.PHP用於生成動態網頁內容,處理表單數據,訪問數據庫等,具有強大的社區支持和開源資源。 3.PHP是解釋型語言,執行過程包括詞法分析、語法分析、編譯和執行。 4.PHP可以與MySQL結合用於用戶註冊系統等高級應用。 5.調試PHP時,可使用error_reporting()和var_dump()等函數。 6.優化PHP代碼可通過緩存機制、優化數據庫查詢和使用內置函數。 7

PHP和Python各有優勢,選擇應基於項目需求。 1.PHP適合web開發,語法簡單,執行效率高。 2.Python適用於數據科學和機器學習,語法簡潔,庫豐富。

Java 8引入了Stream API,提供了一種強大且表達力豐富的處理數據集合的方式。然而,使用Stream時,一個常見問題是:如何從forEach操作中中斷或返回? 傳統循環允許提前中斷或返回,但Stream的forEach方法並不直接支持這種方式。本文將解釋原因,並探討在Stream處理系統中實現提前終止的替代方法。 延伸閱讀: Java Stream API改進 理解Stream forEach forEach方法是一個終端操作,它對Stream中的每個元素執行一個操作。它的設計意圖是處

PHP適合web開發,特別是在快速開發和處理動態內容方面表現出色,但不擅長數據科學和企業級應用。與Python相比,PHP在web開發中更具優勢,但在數據科學領域不如Python;與Java相比,PHP在企業級應用中表現較差,但在web開發中更靈活;與JavaScript相比,PHP在後端開發中更簡潔,但在前端開發中不如JavaScript。

PHP和Python各有優勢,適合不同場景。 1.PHP適用於web開發,提供內置web服務器和豐富函數庫。 2.Python適合數據科學和機器學習,語法簡潔且有強大標準庫。選擇時應根據項目需求決定。

PHPhassignificantlyimpactedwebdevelopmentandextendsbeyondit.1)ItpowersmajorplatformslikeWordPressandexcelsindatabaseinteractions.2)PHP'sadaptabilityallowsittoscaleforlargeapplicationsusingframeworkslikeLaravel.3)Beyondweb,PHPisusedincommand-linescrip

PHP成為許多網站首選技術棧的原因包括其易用性、強大社區支持和廣泛應用。 1)易於學習和使用,適合初學者。 2)擁有龐大的開發者社區,資源豐富。 3)廣泛應用於WordPress、Drupal等平台。 4)與Web服務器緊密集成,簡化開發部署。

PHP適用於Web開發和內容管理系統,Python適合數據科學、機器學習和自動化腳本。 1.PHP在構建快速、可擴展的網站和應用程序方面表現出色,常用於WordPress等CMS。 2.Python在數據科學和機器學習領域表現卓越,擁有豐富的庫如NumPy和TensorFlow。
