在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));
}
}