一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - java IO 字節流詳解及實例代碼

java IO 字節流詳解及實例代碼

2020-08-28 10:24Java教程網 Java教程

這篇文章主要介紹了java IO 字節流詳解及實例代碼的相關資料,需要的朋友可以參考下

java IO 字節流詳解

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

這是我當初在學習Java IO這一塊很難理解的一塊,輸入輸出流我們可必須以一個為參照物:我們以內存為參照物,凡是寫入內存的我們叫輸入流,從內存中寫出的我們叫輸出流??聪旅娴氖纠龍D

java IO 字節流詳解及實例代碼

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

2.         再看流的分類

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

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

3.         字節流:

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

java IO 字節流詳解及實例代碼

1)        字節輸出流:OutputStream

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

OutputStream類的常用方法

 

方法名稱

描述

public void close() throws IOException

關閉輸出流

public void flush() throws IOException

刷新緩沖區

public void write(byte[] b) throws IOException

將一個byte數組寫入數據流

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

將一個指定范圍的byte數組寫入數據流

public abstract void write(int b) throws IOException

將一個字節數據寫入數據流

  

 

實例1:Helloworld從HelloWorld開始

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
public static void main(String[] args) throws Exception {
 
  // 創建一個以當前工程目錄下的名為“helloworld.txt”的文本文件
 
  File file = new File("hellowolrd.txt");
 
  OutputStream outputStream = null;
 
  // 通過FileOutPutStream的子類實例化OutputStream對象
 
  outputStream = new FileOutputStream(file);
 
  // 聲明一個字符串
 
  String str = "hello,world";
 
  // 將字符串轉換成字節數組
 
  byte[] b = str.getBytes();
 
  // 寫入數據
 
  outputStream.write(b);
 
  // 關閉輸出流
 
  outputStream.close();
 
  outputStream.flush();
 
}

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

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

FileOutputStream(File file,boolean append)

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

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

outputStream = new FileOutputStream(file,true);

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

2)        字節輸入流:InputStream

 InputStream類的常用方法

 

方法名稱

描述

public void avaliable() throws IOException

可以取得輸入文件的大小

public void close() throws IOException

關閉輸入流

public abstract int read() throws IOException

讀取內容,以數字的方式讀取

public int read (byte b) throws IOException

將內容讀到byte數組,同時返回讀入的個數

 

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

實例2:還是HelloWorld

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
public static void main(String[] args) throws Exception {
 
    // 創建一個以當前工程目錄下的名為“helloworld.txt”的文本文件
 
    // 這個文件在上一個例子里已經創建,并且里面已有數據
 
    File file = new File("hellowolrd.txt");
 
    // 聲明InputStream對象
 
    InputStream inputStream = null;
 
    // 通過FileInputStream子類實例化InputStream對象
 
    inputStream = new FileInputStream(file);
 
    // 聲明一個字節數組用以接收讀入的數據
 
    byte[] b = new byte[1024];
 
    // 開始讀入數據,將數據內容讀到此數組中
 
    inputStream.read(b);
 
    // 關閉輸入流
 
    inputStream.close();
 
    // 在控制臺打印
 
    System.out.println(new String(b));
 
  }

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

方式一:聲明字節數組的時候指定字節數組的長度為文本內容的長度

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

方式二:在將字節數組轉換成字符串的調用String(byte b,int off,int len)這個構造函數

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

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

原文鏈接:http://blog.csdn.net/qq_35101189/article/details/61914285

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲欧美影院 | 图片专区小说专区卡通动漫 | 91精品91久久久久久 | 天堂伊人| 日本在线不卡免 | 无码AV免费精品一区二区三区 | 国产三级精品久久三级国专区 | 国产国语在线播放视频 | av在线亚洲男人的天堂 | 被黑人日 | a级黄色片免费 | 国产亚洲精品高清在线 | 免费看视频的 | 亚洲日本中文字幕天堂网 | 538精品视频在线观看 | 日本视频观看 | 日韩精品久久不卡中文字幕 | 99久久综合给久久精品 | 男人女人插 | 久久水蜜桃亚洲AV无码精品偷窥 | 成年人视频在线免费观看 | 国产久热香蕉在线观看 | 香蕉精品视频 | 99精品视频免费观看 | 毛片啪啪视频 | 日本视频在线观看播放 | 黄网在线观看免费网站台湾swag | 国产原创一区二区 | 奇米影视99| 九九99热久久精品在线6 | 动漫美女人物被黄漫在线看 | 美女全身无遮挡 | 免费看国产一级特黄aa大片 | 性欧美videosex18嫩 | a色在线 | 黄色大片三级 | 亚洲冬月枫中文字幕在线看 | 69日本xxxx| 亚洲美女爱爱 | 国产精品二区高清在线 | 日韩视频免费一区二区三区 |