使用Inputstream讀取文件


在java中,可以使用InputStream對文件進行讀取,就是字節流的輸入。當讀取文件內容進程序時,需要使用一個byte數組來進行存儲,如此會有如下兩個問題:

1.如何建立合適大小的byte數組,如果已知輸入流的大小。

2.如果不知輸入流的大小,則肯定需要建立一個很大的byte數組,那么byte中很可能有空的內容,那么如何正確合適的將byte數組的中的內容輸出?

先看第一個問題:解決之道就是獲取輸入流的大小,創建此大小的byte數組。代碼如下:view plaincopy to clipboardprint?
//使用InputStream從文件中讀取數據,在已知文件大小的情況下,建立合適的存儲字節數組   
import java.io.File;   
import java.io.InputStream;   
import java.io.FileInputStream;   
public class InputStreamDemo01   
{   
    public static void main(String args[])throws Exception{   
        File f = new File("E:"+File.separator+"java2"+File.separator+"StreamDemo"+File.separator+"test.txt");   
        InputStream in = new FileInputStream(f);   
        byte b[]=new byte[(int)f.length()];     //創建合適文件大小的數組   
        in.read(b);    //讀取文件中的內容到b[]數組   
        in.close();   
        System.out.println(new String(b));   
    }   
}  
//使用InputStream從文件中讀取數據,在已知文件大小的情況下,建立合適的存儲字節數組
import java.io.File;
import java.io.InputStream;
import java.io.FileInputStream;
public class InputStreamDemo01
{
 public static void main(String args[])throws Exception{
  File f = new File("E:"+File.separator+"java2"+File.separator+"StreamDemo"+File.separator+"test.txt");
  InputStream in = new FileInputStream(f);
  byte b[]=new byte[(int)f.length()];     //創建合適文件大小的數組
  in.read(b);    //讀取文件中的內容到b[]數組
  in.close();
  System.out.println(new String(b));
 }
}

第二個問題:問題的解決之道就是獲得輸入流何時結束,它在byte中的尾索引位置。可以通過read()方法實現,read()返回讀取的字節內容,當內容為空時返回-1。利用此特征可以解決第二個問題。代碼如下:

view plaincopy to clipboardprint?
//同過判斷文件的結尾來讀取文件   
import java.io.File;   
import java.io.InputStream;   
import java.io.FileInputStream;   
public class InputStreamDemo02   
{   
    public static void main(String args[]) throws Exception{   
        File f = new File("E:"+File.separator+"java2"+File.separator+"StreamDemo"+File.separator+"test.txt");   
        InputStream in = new FileInputStream(f);   
        byte b[] = new byte[1024];   
        int len = 0;   
        int temp=0;          //所有讀取的內容都使用temp接收   
        while((temp=in.read())!=-1){    //當沒有讀取完時,繼續讀取   
            b[len]=(byte)temp;   
            len++;   
        }   
        in.close();   
        System.out.println(new String(b,0,len));   
    }   


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM