File類的基本操作之InputStream位元組輸入流
阿新 • • 發佈:2018-11-08
話不多少。我直接把程式碼貼上來了。有什麼問題請給我留言
package org.mark.streamRW; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; /** * 位元組輸出流:OutputStream。整個IO包中位元組輸出流的最大父類 * 位元組輸入流:InputStream * * InputStream使用子類FileInputStream。讀取 */ public class InStream1 { /** * @param args */ public static void main(String[] args)throws Exception{ // TODO Auto-generated method stub //第1步:使用File類找到一個檔案 File file = new File("d:" +File.separator +"test.txt"); //第2步:通過子類例項化父類物件 InputStream in = null; in = new FileInputStream(file);//通過物件多型性,進行例項化 //3.讀 byte[] b = new byte[1024]; in.read(b); //4.關閉 in.close(); System.out.println(new String(b));//變成字串輸出 //遺留問題:留了很多空格。沒有那麼大,開了1024空間,沒有內容的為空 } }
上一個程式的遺留問題:
package org.mark.streamRW; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; //解決遺留問題 public class InStream2 { /** * @param args */ public static void main(String[] args) throws Exception{ // TODO Auto-generated method stub //第1步:使用File類找到一個檔案 File file = new File("d:" +File.separator +"test.txt"); //第2步:通過子類例項化父類物件 InputStream in = null; in = new FileInputStream(file);//通過物件多型性。進行例項化 //3.讀 byte[] b = new byte[1024]; int len = in.read(b);//讀取內容 //4.關閉 in.close(); //解決遺留問題。看String提供的方法 System.err.println("讀入資料的長度:" + len); System.out.println(new String(b,0,len));//變成字串輸出 //能不能依據檔案大小來開闢空間呢? } }
解決依據檔案大小來開闢空間
package org.mark.streamRW; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; //解決依據檔案大小來開闢空間 public class InStream3 { /** * @param args */ public static void main(String[] args)throws Exception { // TODO Auto-generated method stub //第1步:使用File類找到一個檔案 File file = new File("d:" +File.separator +"test.txt"); //第2步:通過子類例項化父類物件 InputStream in = null; in = new FileInputStream(file);//通過物件多型性,進行例項化 //3.讀 byte[] b = new byte[(int) file.length()]; //解決依據檔案大小來開闢空間 int len = in.read(b);//讀取內容 //4.關閉 in.close(); //解決遺留問題,看String提供的方法 System.err.println("讀入資料的長度:" + len); System.out.println(new String(b));//變成字串輸出 } }
僅僅適合知道檔案大小的輸入
package org.mark.streamRW;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
//僅僅適合知道檔案大小的輸入
public class InStream4 {
/**
* @param args
*/
public static void main(String[] args) throws Exception{
// TODO Auto-generated method stub
//第1步:使用File類找到一個檔案
File file = new File("d:" +File.separator +"test.txt");
//第2步:通過子類例項化父類物件
InputStream in = null;
in = new FileInputStream(file);//通過物件多型性,進行例項化
//3.讀
byte[] b = new byte[(int) file.length()]; //解決依據檔案大小來開闢空間
for (int i = 0; i < b.length; i++) {
b[i] = (byte) in.read();
}
// int len = in.read(b);//讀取內容
//4.關閉
in.close();
//解決遺留問題。看String提供的方法
System.out.println(new String(b));//變成字串輸出
}
}
當不知道讀取內容有多大的時候。就僅僅能以讀取的資料是否為-1為讀完的標誌
package org.mark.streamRW;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
//當不知道讀取內容有多大的時候,就僅僅能以讀取的資料是否為-1為讀完的標誌
public class InStream5 {
/**
* @param args
*/
public static void main(String[] args)throws Exception {
// TODO Auto-generated method stub
//第1步:使用File類找到一個檔案
File file = new File("d:" +File.separator +"test.txt");
//第2步:通過子類例項化父類物件
InputStream in = null;
in = new FileInputStream(file);//通過物件多型性。進行例項化
//3.讀
byte[] b = new byte[1024]; //解決依據檔案大小來開闢空間
int len = 0;
int temp = 0;//接受每一個讀取進來的資料
while ((temp = in.read())!= -1) {
//表示還有內容,檔案沒有讀完
b[len] = (byte) temp;
len++ ;
}
//4.關閉
in.close();
//解決遺留問題,看String提供的方法
System.out.println(new String(b,0,len));//變成字串輸出
}
}
貼的太快了~幾乎吧程式關了~