日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

JavaIO流(2)--IO流原理、流的分类及节点流文件流操作

發布時間:2023/12/2 java 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JavaIO流(2)--IO流原理、流的分类及节点流文件流操作 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

    • IO流簡介
    • IO流原理
    • 流的分類
    • IO 流體系
    • 節點流和處理流
    • 節點流操作


IO流簡介

I/O是Input/Output的縮寫, I/O技術是非常實用的技術,用于處理設備之間的數據傳輸。如讀/寫文件,網絡通訊等。

Java程序中,對于數據的輸入/輸出操作以“流(stream)” 的方式進行。

java.io包下提供了各種“流”類和接口,用以獲取不同種類的數據,并通過標準的方法輸入或輸出數據。


IO流原理

輸入input:讀取外部數據(磁盤、光盤等存儲設備的數據)到程序(內存)中。

輸出output:將程序(內存)數據輸出到磁盤、光盤等存儲設備中。


流的分類

①按操作數據單位不同分為:字節流(8 bit 一般用于非文本文件),字符流(16 bit 一般用于文本文件)

②按數據流的流向不同分為:輸入流,輸出流(相對的)

③按流的角色的不同分為:節點流(直接處理文件),處理流(處理被包含的流)


IO 流體系

Java的IO流共涉及40多個類,實際上非常規則,都是從如下4個抽象基類派生的。
由這四個類派生出來的子類名稱都是以其父類名作為子類名后綴。


節點流和處理流

節點流:直接從數據源或目的地讀寫數據


處理流:不直接連接到數據源或目的地,而是“連接”在已存在的流(節點流或處理流)之上,通過對數據的處理為程序提供更為強大的讀寫功能。


節點流操作

讀入以FileReader為例

import java.io.File; import java.io.FileReader; import java.io.IOException;/*** @Author: Yeman* @Date: 2021-09-25-16:30* @Description:*/ public class FileReaderTest {public static void main(String[] args) {FileReader fileReader = null;try { //一定需要try-catch//1、實例化File對象,指明要操作的文件File file = new File("IO\\hello.txt");//2、提供具體的流fileReader = new FileReader(file);//3、讀取操作int read = fileReader.read(); //空參為一位一位讀取,末尾返回-1while (read != -1){System.out.print((char) read);read = fileReader.read();}} catch (IOException e) {e.printStackTrace();} finally {//4、關閉流try {if (fileReader != null) { //確保不會因具體流未創建而產生空指針異常fileReader.close();}} catch (IOException e) {e.printStackTrace();}}} }

import java.io.File; import java.io.FileReader; import java.io.IOException;/*** @Author: Yeman* @Date: 2021-09-25-16:30* @Description:*/ public class FileReaderTest {public static void main(String[] args) {FileReader fileReader = null;try { //一定需要try-catch//1、實例化File對象,指明要操作的文件File file = new File("IO\\hello.txt");//2、提供具體的流fileReader = new FileReader(file);//3、讀取操作char[] chars = new char[5];//char型數組為參數,該數組相當于一個容器,把讀取放在里面,返回該次讀取的個數,末尾返回-1// 最后若不夠,容器后部分仍為上一次取的,前部分則被新的這次取到的覆蓋了int length = fileReader.read(chars);while (length != -1){for (int i = 0; i < length; i++) {System.out.print(chars[i]);}length = fileReader.read(chars);}} catch (IOException e) {e.printStackTrace();} finally {//4、關閉流try {if (fileReader != null) {fileReader.close();}} catch (IOException e) {e.printStackTrace();}}} }

寫出以FileWriter為例

import java.io.*;/*** @Author: Yeman* @Date: 2021-09-25-16:30* @Description:*/ public class FileReaderTest {public static void main(String[] args) {FileWriter fw1 = null; //若硬盤中不存在file,創建之;若存在,內容覆蓋之try {//1、實例化File對象,指明要寫出的文件File file = new File("IO\\hi.txt");//2、創建具體的流fw1 = new FileWriter(file);//FileWriter fw2 = new FileWriter(file,false); //若硬盤中不存在file,創建之;若存在,內容覆蓋之//FileWriter fw3 = new FileWriter(file,true); //若硬盤中不存在file,創建之;若存在,內容追加之//3、寫出操作fw1.write("Hello World!\n",0,5); //寫出“Hello”fw1.write("你好,世界!"); //寫出“你好,世界!”} catch (IOException e) {e.printStackTrace();} finally {//4、關閉流try {if (fw1 != null) fw1.close();} catch (IOException e) {e.printStackTrace();}}} }

實現一個圖片復制(讀入寫出,使用字節流)

import java.io.*;/*** @Author: Yeman* @Date: 2021-09-25-16:30* @Description:*/ public class FileReaderTest {public static void main(String[] args) {FileInputStream fis = null;FileOutputStream fos = null;try {File inFile = new File("IO\\input.jpg");File outFile = new File("IO\\output.png");fis = new FileInputStream(inFile);fos = new FileOutputStream(outFile);byte[] bytes = new byte[1024]; //通常使用1024,2的10次方int length = fis.read(bytes);while (length != -1){fos.write(bytes,0,length);length = fis.read(bytes);}} catch (IOException e) {e.printStackTrace();} finally {try {if (fos != null) fos.close();} catch (IOException e) {e.printStackTrace();}try {if (fis != null) fis.close();} catch (IOException e) {e.printStackTrace();}}} }

總結

以上是生活随笔為你收集整理的JavaIO流(2)--IO流原理、流的分类及节点流文件流操作的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。