1. 程式人生 > >FileInputStream讀取位元組流。讀取檔案資料的兩種方式(寫的好)

FileInputStream讀取位元組流。讀取檔案資料的兩種方式(寫的好)

總結:   

//1讀取檔案的資料到位元組流inputStream
    InputStream inputStream = new FileInputStream("D:\\demo.txt");//讀取檔案的資料到位元組流inputStream。

//2將位元組流inputStream轉換成字元流inputStreamReader
    InputStreamReader inputStreamReader = new InputStreamReader(inputStream);//將位元組流inputStream轉換成字元流inputStreamReader。
  
//3讀取字元流inputStreamReader

的資料到字元陣列ch中,並返回字元陣列ch的真實的字元數
    char []ch = new char[1024];
    int len = isr.read(ch);

 

轉載:https://blog.csdn.net/a909301740/article/details/52574602

FileInputStream(檔案位元組讀取流):

read():一個一個位元組的讀

read(byte[] buf):先把位元組存入到緩衝區位元組陣列中,一下讀一個數組(常用)

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Arrays;
 
public class FileInputStreamDemo1 {
 
    private static final int SIZE = 4096;
 
    public static void main(String[] args) throws IOException {
        
        /*
         * 將已有檔案的資料讀取出來
         * 既然是讀,使用InputStream
         * 而且是要操作檔案。FileInputStream
         * 
         */
        
        //為了確保檔案一定在之前是存在的,將字串路徑封裝成File物件
        File file = new File("tempfile\\fos.txt");
        if(!file.exists()){
            throw new RuntimeException("要讀取的檔案不存在");
        }
        
        //建立檔案位元組讀取流物件時,必須明確與之關聯的資料來源。
        FileInputStream fis = new FileInputStream(file);
        
        //呼叫讀取流物件的讀取方法
        //1.read()返回的是讀取到的位元組
        //2.read(byte[] b)返回的是讀取到的位元組個數
        
        //1. 
//        int by=0;
//        while((by=fis.read())!=-1){
//            System.out.println(by);
//        }
        
        //2.
//        byte[] buf = new byte[3];
//        int len = fis.read(buf);//len記錄的是往位元組數組裡儲存的位元組個數
//        System.out.println(len+"...."+Arrays.toString(buf));//只是轉成了字串的表現形式
//        System.out.println(len+"...."+new String(buf,0,len));//轉成字串
//        
//        int len1 = fis.read(buf);
//        System.out.println(len1+"...."+new String(buf,0,len1));
        
        //建立一個位元組陣列,定義len記錄長度
        int len = 0;
        byte[] buf = new byte[SIZE];
        while((len=fis.read(buf))!=-1){
            System.out.println(new String(buf,0,len));
        }
        
        //關資源
        fis.close();
    }
 
}

下面的寫的也還不錯

轉載:https://blog.csdn.net/omg_c/article/details/52038302

 引數 in物件通過 InputStream in = System.in;獲得。//讀取鍵盤上的資料。 
    或者 InputStream in = new FileInputStream(String fileName);//讀取檔案中的資料。可以看出 FileInputStream 為InputStream的子類。 
主要方法 :int read();//讀取單個字元。 
                 int read(char []cbuf);//將讀取到的字元存到陣列中。返回讀取的字元數。

 

   //1讀取檔案的資料到位元組流inputStream
    InputStream inputStream = new FileInputStream("D:\\demo.txt");//讀取檔案的資料到位元組流inputStream。

   //2將位元組流inputStream轉換成字元流inputStreamReader
    InputStreamReader inputStreamReader = new InputStreamReader(inputStream);//將位元組流inputStream轉換成字元流inputStreamReader。
  
    //3讀取字元流inputStreamReader的資料到字元陣列ch中,並返回字元陣列ch的真實的字元數
    char []ch = new char[1024];
    int len = isr.read(ch);
 

import java.io.*;
class InputStreamReaderDemo {
  public static void transReadNoBuf() throws IOException {
    /**
     * 沒有緩衝區,只能使用read()方法。
     */
    //讀取位元組流
    //InputStream in = System.in;//讀取鍵盤的輸入。
    InputStream in = new FileInputStream("D:\\demo.txt");//讀取檔案的資料。
    //將位元組流向字元流的轉換。要啟用從位元組到字元的有效轉換,
    //可以提前從底層流讀取更多的位元組.
    InputStreamReader isr = new InputStreamReader(in);//讀取
    //綜合到一句。
    //InputStreamReader isr = new InputStreamReader(
    //new FileInputStream("D:\\demo.txt"));
      
    char []cha = new char[1024];
    int len = isr.read(cha);
    //按照我的理解是:讀取字元流ISR的資料到字元陣列cha中,並返回字元陣列cha的真實的字元數
    System.out.println(new String(cha,0,len));
    isr.close();
 
  }
  public static void transReadByBuf() throws IOException {
    /**
     * 使用緩衝區 可以使用緩衝區物件的 read() 和  readLine()方法。
     */
    //讀取位元組流
    //InputStream in = System.in;//讀取鍵盤上的資料
    InputStream in = new FileInputStream("D:\\demo.txt");//讀取檔案上的資料。
    //將位元組流向字元流的轉換。
    InputStreamReader isr = new InputStreamReader(in);//讀取
    //建立字元流緩衝區
    BufferedReader bufr = new BufferedReader(isr);//緩衝
    //BufferedReader bufr = new BufferedReader(
    //new InputStreamReader(new FileInputStream("D:\\demo.txt")));可以綜合到一句。
      /*int ch =0;
    ch = bufr.read();
    System.out.println((char)ch);
    */
    String line;
    while((line = bufr.readLine())!=null){
      System.out.println(line);
    }
    isr.close();
  }
}