亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

java IO 字節(jié)流詳解及實例代碼

 更新時間:2017年03月14日 08:54:44   投稿:lqh  
這篇文章主要介紹了java IO 字節(jié)流詳解及實例代碼的相關(guān)資料,需要的朋友可以參考下

java IO 字節(jié)流詳解

1.         如何理解輸入輸出流?

這是我當(dāng)初在學(xué)習(xí)Java IO這一塊很難理解的一塊,輸入輸出流我們可必須以一個為參照物:我們以內(nèi)存為參照物,凡是寫入內(nèi)存的我們叫輸入流,從內(nèi)存中寫出的我們叫輸出流。看下面的示例圖

有了這樣的一個概念對于我們再學(xué)習(xí)Java中的IO流我相信就會變得特別簡單了。 

2.         再看流的分類

流的分類,Java的流分類比較豐富,剛接觸的人看了后會感覺很暈。流分類的方式很多:

1、按照輸入的方向分,輸入流和輸出流,輸入輸出的參照對象是Java程序。(InputStream OutPutStream)
2、按照處理數(shù)據(jù)的單位不同分,字節(jié)流和字符流,字節(jié)流讀取的最小單位是一個字節(jié)(1byte=8bit),而字符流一次可以讀取一個字符(1char = 2byte = 16bit)。(InputStream Reader)
3、按照功能的不同分,分節(jié)點流和處理流,節(jié)點流是直接從一個源讀寫數(shù)據(jù)的流(這個流沒有經(jīng)過包裝和修飾),處理流是在對節(jié)點流封裝的基礎(chǔ)上的 一種流,F(xiàn)ileInputStream是一個接點流,可以直接從文件讀取數(shù)據(jù),但是BufferedInputStream可以包裝 FileInputStream,使得其有緩沖功能。(FileInputStream BufferedInputStream)
其實除了以上三種分類外,還有一些常常聽到的一些分類比如:對象流、緩沖流、壓縮流、文件流等等。其實都是節(jié)點流和處理流的子分類。當(dāng)然你也可以創(chuàng)建新的流類型,只要你需要。

3.         字節(jié)流:

字節(jié)流主要操作byte類型數(shù)據(jù),以byte數(shù)組為準,主要操作類有InputStream(字節(jié)輸入流)、OutputSteam(字節(jié)輸出流)由于IputStream和OutputStream都是抽象類,所要要用這兩個類的話,則首先要通過子類實例化對象。下面就是這兩個類的一些子類結(jié)構(gòu)圖 

 

1)        字節(jié)輸出流:OutputStream

OutputStream是一個抽象類,要想使用它,必須通過子類來實例化它。 

OutputStream類的常用方法

方法名稱

描述

public void close() throws IOException

關(guān)閉輸出流

public void flush() throws IOException

刷新緩沖區(qū)

public void write(byte[] b) throws IOException

將一個byte數(shù)組寫入數(shù)據(jù)流

public void write(byte[] b,int off,int len) throws IOException

將一個指定范圍的byte數(shù)組寫入數(shù)據(jù)流

public abstract void write(int b) throws IOException

將一個字節(jié)數(shù)據(jù)寫入數(shù)據(jù)流

  

實例1:Helloworld從HelloWorld開始

功能:(向一個名為”hello.txt”的文本文件中寫一個“HelloWorld”) 

public static void main(String[] args) throws Exception { 
 
  // 創(chuàng)建一個以當(dāng)前工程目錄下的名為“helloworld.txt”的文本文件 
 
  File file = new File("hellowolrd.txt"); 
 
  OutputStream outputStream = null; 
 
  // 通過FileOutPutStream的子類實例化OutputStream對象 
 
  outputStream = new FileOutputStream(file); 
 
  // 聲明一個字符串 
 
  String str = "hello,world"; 
 
  // 將字符串轉(zhuǎn)換成字節(jié)數(shù)組 
 
  byte[] b = str.getBytes(); 
 
  // 寫入數(shù)據(jù) 
 
  outputStream.write(b); 
 
  // 關(guān)閉輸出流 
 
  outputStream.close(); 
 
  outputStream.flush(); 
 
} 

我們可以看到當(dāng)前工程目錄下已經(jīng)有一個helloworld.txt且里面已經(jīng)有數(shù)據(jù),如果我們把str的值改變的話,文本文件里的數(shù)據(jù)也會改變,所以我們想是不是可以不刪除原來的數(shù)據(jù),在追尾上追加上。

我們只要在構(gòu)造FileOutputStream對象的時候選擇另一種構(gòu)造方法就可以了

FileOutputStream(File file,boolean append)

第二個參數(shù)就是是否采用追加的方式寫入到文本文件中

把上面的代碼修改下就可以了

outputStream = new FileOutputStream(file,true);

 再從例子1我們理解我們對輸入輸出流的理解,在這個例子里,我們聲明的字符串肯定是在內(nèi)存中的,現(xiàn)在我們要從內(nèi)存中把數(shù)據(jù)寫到文本中,所以我們用到輸出流。這也正符合了我對輸入輸出流的理解,當(dāng)然大家肯定還有其他的理解方式。

2)        字節(jié)輸入流:InputStream

 InputStream類的常用方法

方法名稱

描述

public void avaliable() throws IOException

可以取得輸入文件的大小

public void close() throws IOException

關(guān)閉輸入流

public abstract int read() throws IOException

讀取內(nèi)容,以數(shù)字的方式讀取

public int read (byte b) throws IOException

將內(nèi)容讀到byte數(shù)組,同時返回讀入的個數(shù)

與OutputStream類一樣,InputStream本身也是一個抽象類,要想使用它,也必須依靠其子類。

實例2:還是HelloWorld

在上一個例子的基礎(chǔ)上我們從文本中讀取數(shù)據(jù)并且把它顯示在控制臺上

public static void main(String[] args) throws Exception { 
 
    // 創(chuàng)建一個以當(dāng)前工程目錄下的名為“helloworld.txt”的文本文件 
 
    // 這個文件在上一個例子里已經(jīng)創(chuàng)建,并且里面已有數(shù)據(jù) 
 
    File file = new File("hellowolrd.txt"); 
 
    // 聲明InputStream對象 
 
    InputStream inputStream = null; 
 
    // 通過FileInputStream子類實例化InputStream對象 
 
    inputStream = new FileInputStream(file); 
 
    // 聲明一個字節(jié)數(shù)組用以接收讀入的數(shù)據(jù) 
 
    byte[] b = new byte[1024]; 
 
    // 開始讀入數(shù)據(jù),將數(shù)據(jù)內(nèi)容讀到此數(shù)組中 
 
    inputStream.read(b); 
 
    // 關(guān)閉輸入流 
 
    inputStream.close(); 
 
    // 在控制臺打印 
 
    System.out.println(new String(b)); 
 
  } 

如果以這種方式打印,我們可以看到雖然控制臺里是打印出了文本文件中的內(nèi)容,但是后面跟了很多空格,這是我們不需要的,對于這種情況我們有兩種解決方式

方式一:聲明字節(jié)數(shù)組的時候指定字節(jié)數(shù)組的長度為文本內(nèi)容的長度

byte[] b=new byte[(int)file.length()]; 

方式二:在將字節(jié)數(shù)組轉(zhuǎn)換成字符串的調(diào)用String(byte b,int off,int len)這個構(gòu)造函數(shù)

System.out.println(new String(b,0,(int)file.length()));

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關(guān)文章

  • JAVA DOM解析XML文件過程詳解

    JAVA DOM解析XML文件過程詳解

    這篇文章主要介紹了JAVA DOM解析XML文件過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-01-01
  • Java中如何使用?byte?數(shù)組作為?Map?的?key

    Java中如何使用?byte?數(shù)組作為?Map?的?key

    本文將討論在使用HashMap時,當(dāng)byte數(shù)組作為key時所遇到的問題及其解決方案,介紹使用String和List這兩種數(shù)據(jù)結(jié)構(gòu)作為臨時解決方案的方法,感興趣的朋友跟隨小編一起看看吧
    2023-06-06
  • java讀取圖片并轉(zhuǎn)化為二進制字符串的實現(xiàn)方法

    java讀取圖片并轉(zhuǎn)化為二進制字符串的實現(xiàn)方法

    這篇文章主要介紹了java讀取圖片并轉(zhuǎn)化為二進制字符串的實例代碼,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-09-09
  • Java的特點和優(yōu)點(動力節(jié)點整理)

    Java的特點和優(yōu)點(動力節(jié)點整理)

    由于Java語言的設(shè)計者們十分熟悉C++語言,所以在設(shè)計時很好地借鑒了C++語言??梢哉f,Java語言是一種比C++語言“還面向?qū)ο蟆钡囊环N編程語言,下面通過本文說下java的特點和優(yōu)點
    2017-03-03
  • quartz定時執(zhí)行任務(wù),并配置web.xml的操作方法

    quartz定時執(zhí)行任務(wù),并配置web.xml的操作方法

    下面小編就為大家?guī)硪黄猶uartz定時執(zhí)行任務(wù),并配置web.xml的操作方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07
  • Java工程中可執(zhí)行JAR兩種打包方式詳解

    Java工程中可執(zhí)行JAR兩種打包方式詳解

    這篇文章主要為大家詳細介紹了Java工程中可執(zhí)行JAR兩種打包方式,一體化可執(zhí)行包和帶外部依賴lib的可執(zhí)行包,有需要的小伙伴可以學(xué)習(xí)一下
    2024-04-04
  • Spring實現(xiàn)Aware接口自定義獲取bean的兩種方式

    Spring實現(xiàn)Aware接口自定義獲取bean的兩種方式

    這篇文章主要介紹了Java編程實現(xiàn)Aware接口自定義獲取bean的兩種方式,通過BeanFactoryAware和ApplicationContextAware,具有一定參考價值,需要的朋友可以了解下。
    2017-09-09
  • Fluent Mybatis學(xué)習(xí)之Update語法實踐

    Fluent Mybatis學(xué)習(xí)之Update語法實踐

    Fluent MyBatis是一個MyBatis的增強工具,沒有對mybatis做任何修改。本篇文章將詳細介紹對Fluent Mybatis中的update語法進行驗證。代碼具有一定價值,感興趣的小伙伴可以學(xué)習(xí)一下
    2021-11-11
  • java 如何實現(xiàn)多語言配置i18n

    java 如何實現(xiàn)多語言配置i18n

    這篇文章主要介紹了java 如何實現(xiàn)多語言配置i18n的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • 關(guān)于spring5的那些事:@Indexed 解密

    關(guān)于spring5的那些事:@Indexed 解密

    這篇文章主要介紹了關(guān)于spring5的那些事:@Indexed 解密,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11

最新評論