歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Java關於IO流的介紹

JDK提供的流繼承了四大類:InputStream(字節輸入流)、OutputStream(字節輸出流)、Reader(字符輸入流)、Writer(字符輸出流)。

字符流和字節流的主要區別:
      1.字節流讀取的時候,讀到一個字節就返回一個字節;  字符流使用了字節流讀到一個或多個字節(中文對應的字節數是兩個,在UTF-8碼表中是3個字節)時。先去查指定的編碼表,將查到的字符返回。
      2.字節流可以處理所有類型數據,如:圖片,MP3,AVI視頻文件,而字符流只能處理字符數據。
   只要是處理純文本數據,就要優先考慮使用字符流,除此之外都用字節流。

詳解如下:

一、字節流講解

  1.用流對文件進行處理

package com.chen.test;

import java.io.*;
/**
 *
 * @author 陳家小帥
 *
 */
public class TestIO {
    public static void main(String[] args) {
        File file = new File("E:/java.txt");
        if (!file.exists()) {        //先判斷該目錄文件是否存在
            try {
                //file.mkdirs();  創建該目錄下指定的文件夾
                file.createNewFile(); // 當文件不存在時,創建此文件夾
               
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        //file.delete();        //刪除指定的文件
        System.out.println("文件名:"+file.getName());
    }
}

2. InputStream 和 OutputStream 是兩個 abstact 類,對於字節為導向的 stream 都擴展這兩個基類;

inputStream中的關鍵方法:

read():方法是讀取一個byte字節,但是返回的是int。

read(byte[]):一次性讀取內容到緩沖字節數組

read(byte[],int,int):從數據流中的哪個位置offset開始讀長度為len的內容到緩沖字節數組

OutputStream中的關鍵方法

write(int):寫入一個字節到stream中

write(byte[])寫入一個byte數組到stream中

write(byte[],int,int):把byte數組中從開始處寫入長度為len的數據

flush():這個方法是用來刷新stream中的數據,讓緩沖區中的數據強制的輸出

3.FileInputStream和FileOutputStream

  FileInputStream : 從文件系統中的某個文件中獲得輸入字節.

  FileOutputStream : 文件輸出流是用於將數據寫入 File 或 FileDescriptor 的輸出流.

下面是一個例子:

package com.chen.test;

import java.io.*;
/**
 *
 * @author 陳家小帥
 *
 */
public class Test4 {
    public static void main(String[] args) throws Exception {
        String path1 = "E:/WorkSpace/Mouth/bin/Dest.txt";
        String path2 = "E:/WorkSpace/Mouth/bin/D.txt";
        ReadByFIS(path1, path2);
    }
/**
    * 使用FileInputStream 將一個文件的內容寫入到另一個文件中,並在控制台輸出
    *
    * @param path1
    * @param path2
    * @throws Exception
    */
    public static void ReadByFIS(String path1, String path2) throws Exception {
        InputStream in = new FileInputStream(path1);        //創建文件輸入流
        OutputStream out = new FileOutputStream(path2);        //創建文件輸出流
        byte[] buffer = new byte[1024];                        //定義字節數組
        int len = 0;
        while ((len = in.read(buffer)) > 0) {                //將最多buffer.lenth個字節的數據讀入byte數組中
            String s = new String(buffer, 0, len);            //將讀入的字節轉換成String類型
            System.out.println(s);                            //輸出讀取到的信息
            out.write(buffer, 0, len);                        //將讀取到的信息寫入到文件中
        }
        out.close();                    //關閉輸入輸出流
        in.close();
    }
}

輸出結果如下:

如果想讓某個字符串寫入到文件中,如下所示:

package com.chen.Two;
import java.io.*;

public class Two {
    // 編寫一個Java程序將111,112,113,114,115 這5個數以寫入到Dest.txt文件中
    public static void main(String[] args) throws Exception {
        String str = "111,112,113,114,115";            //定義字符串
     FileOutputStream fo = new FileOutputStream("E:/WorkSpace/Mouth/bin/Dest.txt");          //創建文件輸出流
        int len = 0 ;
        byte[] buffer = str.getBytes();                //將字符串轉換成byte字節
        fo.write(buffer);                                //將字節數組中的數據寫出
        fo.close();
  }
}

更多詳情見請繼續閱讀下一頁的精彩內容: http://www.linuxidc.com/Linux/2016-08/134437p2.htm

Copyright © Linux教程網 All Rights Reserved