程序的開發當中一直在用文件的讀寫,但是對於java當中輸入流以及輸出流只是會用不理解,一直以來想搞清楚其,但是一直沒有執行(悲劇),今天早上抽出半個小時通過JDK
API1.6.0中文版幫助逐步的瞭解下字節輸入流讀取字節的方法;
下面就說說InputStream當中read()、read(byte[] b)、read(byte[]
b、int off 、int
len)的使用以及區別
一、read()方法:
public static void inputStreamRead1() {
try{
//構造一個輸入流對象(讀數據)test.txt文本的內容爲:我愛你中國
InputStream is = new FileInputStream(“E:\\test.txt”);
//構造一個輸出流對象(寫數據)
OutputStream os = new FileOutputStream(“E:\\ctest.txt”);
int len;//表示讀入的數據(十進制的形式表示)
//FileInputStream可以使用read()方法一次讀取一個字節,讀入的數據以int類型返回,所以,你要是使用System.out.println()將數據顯示出來的時候是以10進制的方式顯示
while((len = is.read())!=-1){
System.out.println(“len=”+len);
os.write(len);
}
os.close();
is.close();
}catch(Exception e){
e.printStackTrace();
}
}
運行以上程序,則控制檯的輸出爲:
如圖
說明:我愛你中國爲5個漢字,5個漢字則爲10個字節,而read()方法爲一個字節一個字節的讀,所以讀取10次,而後len的值則爲漢字的10進製表示
2、read(byte[] b)方法:
public static void inputStreamRead2(){
try{
//構造輸入流對象(讀數據)test.txt文本的內容爲多個我愛你中國
InputStream is = new FileInputStream(“E:\\test.txt”);
//構造輸出流對象(寫數據)
OutputStream os = new FileOutputStream(“E:\\ctest.txt”);
//創建一個長度爲1024的byte數組
byte[] b = new byte[1024];
//int len;表示成功讀取的字節數的個數
//FileInputStream可以使用read(byte[] b )每次讀取多個(b.length)字節數據(每次最多讀取多少個)到byte數組當中
while((len = is.read(b))!=-1){
System.out.println(“len=”+len);
os.write(b);
}
os.close();
is.close();
}catch(Exception e){
e.printStackTrace();
}
}
運行上面的程序則控制檯的輸出爲:
如圖
說明:每次最多讀取1024個字節,很明顯使用這種方式的效率要高於read()讀取的效率,開發的過程當中也見識使用此方式進行讀取;
3、read(byte[] b,int off,intlen):
1、public static void inputStreamRead3(){
try{
//構建輸入流對象(讀文件)
InputStream is = new FileInputStream(“E:\\test.txt”);
//構建輸出流對象(寫文件)
OutputStream os = new FileOutputStream(“E:\\ctest.txt”);
//聲明一個大小爲輸入流大小的數組
byte[] b = new byte[is.available()];
int len = 0;//表示成功讀取的字節數的個數
while(len<is.available()){
//read(byte[] b,int off, int len)表示從輸入流當中最多將len個字節的數據讀取到一個byte數組當中
len+=is.read(b, len, is.available() - len);
os.write(b);
}
os.close();
is.close();
}catch{
e.printStackTrace();
}
}
運行上面的程序控制臺的輸出爲:
如圖
說明:則一次性讀取完成
2、public static void inputStreamRead3(){
try{
//構建輸入流對象(讀文件)
InputStream is = new FileInputStream(“E:\\test.txt”);
//構建輸出流對象(寫文件)
OutputStream os = new FileOutputStream(“E:\\ctest.txt”);
//聲明一個大小爲輸入流大小的數組
byte[] b = new byte[1024];
int len = 0;//表示成功讀取的字節數的個數
while((len=is.read(b,len,1024))!=-1){
System.out.println(“len=”+len);
os.write(b);
}
os.close();
is.close();
}catch{
e.printStackTrace();
}
}
說明:運行上面的程序控制臺的輸出爲:
如圖
則一次最多讀取1024個字節
|
關於Java IO InputStream 的一點整理!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.