目錄 一. EGL 前言 二. EGL 繪製流程簡介 三.eglDestroyContext 函數簡介 四.eglDestroyContext 使用 四.猜你喜歡 零基礎 OpenGL ES 學習路線推薦 : OpenGL ES 學習目錄 >> OpenGL ES 基礎 零基礎 OpenGL ES ...
本篇可以號稱是市面最全面的InputStream的用法詳解,如下所示
在java中InputStream是位元組輸入流,用來將文件中的數據讀取到java程式中。
InputStream是所有位元組輸入流的頂層父類,是一個抽象類。如果要用,需要使用子類。
最常用的子類:FileInputStream。
構造方法:
FileInputStream(File file): 傳遞一個File類型的文件
FileInputStream(String name): 傳遞一個String類型的文件路徑
其他方法:
int read(): 從文件中讀取一個位元組數的數據。並返回讀取到的這個位元組。 如果讀取結束,返回的是-1.
int read(byte[] b): 一次讀取一個位元組數組,輸入流會把讀取到的內容放入到這個位元組數組中,並返回讀取到的個數, 如果讀取結束返回-1.
void close()
使用步驟:
1. 創建一個FileInputStream流對象,綁定一個數據源文件。
2. 調用read方法讀取數據。
3. 釋放資源
註意: 這種方式不能讀取中文,一個中文占多個位元組,此時一次讀取一個位元組會把中文拆開讀。
*/
public class Demo01InputStream {
public static void main(String[] args) throws IOException {
//創建一個FileinputStream對象,並綁定一個數據源文件
// 如果文件不存在,則會拋出異常(File not fount excep)
FileInputStream fis = new FileInputStream("E:\\test\\java265.txt");
//調用read方法讀取數據
// int read(): 從文件中讀取一個位元組數的數據。並返回讀取到的這個位元組。 如果讀取結束,返回的是-1.
int i;
while ((i = fis.read()) != -1) {
/*
條件做了下麵的事情
1. 通過fis輸入流調用read方法,讀取一個位元組。
2. 把讀取到的這個位元組賦值給變數i。
3. 判斷i是否不等於-1,如果不是-1表示讀取到了內容,就在迴圈中對讀取到的內容進行處理。
讀取到的內容在i裡面保存*/
System.out.print((char) i);
}
//釋放資源demo02_inputsteam
}
}
使用位元組輸入流一次讀取一個位元組數組。
int read(byte[] b): 一次讀取一個位元組數組,
輸入流會把讀取到的內容放入到這個位元組數組中,並返回讀取到的個數, 如果讀取結束返回-1.
這種讀取方式效率高
*/
public class Demo02InputStream {
public static void main(String[] args) throws IOException {
//創建Fileinptstream 流對象,並綁定源文件
FileInputStream fis=new FileInputStream("E:\\Test\\java265.txt");
//調用read方法讀取數據.
// // int read(byte[] b): 一次讀取一個位元組數組
// 會將數據讀取到位元組數組裡面。 位元組數組長度是幾,那麼就最多一次讀取幾個。 並
// 且返回讀取到的個數,讀取結束,返回-1
//
// //使用迴圈,一次讀取一個位元組數組
// //定義一個位元組數組,用來保存讀取到的數據。
byte arr[]=new byte[3];
//定義一個變數來保存讀到的個數
int len;//返回讀取到的個數
//使用迴圈開始讀取
while((len=fis.read(arr))!=-1){
/*
上麵條件作了下麵的事情:
1. 通過位元組輸入流fis調用read方法,將數據讀取到Arr這個位元組數組中
2. 將讀取到的有效個數返回,賦值給len。
3. 判斷len是否不等於-1,如果不等於-1,表示讀取到了內容,就就在迴圈中進行處理.
讀取出來的數組在bArr數組中放著
*/
//最後一次讀取可能會有上次殘留的數據,所以不能把位元組數組的整體都轉成String
//System.out.println(new String(bArr));
//讀取到了幾個內容,就把位元組數組的幾個元素轉成字元串,並且列印
System.out.println(new String(arr,0,len));
}
}
}
文件複製。
文件複製其實就是一邊讀,一邊寫,每讀取一次就把讀取到的內容寫到文件中。
為了保證複製效率,我們採用一次讀取一個位元組數組的方式進行複製
思路:
1. 創建位元組輸入流對象,用來讀取
2. 創建位元組輸出流對象,用來寫入。
3. 開始讀取,一次讀取一個位元組數組。
4. 把讀取到的位元組數組的內容寫入到目的地文件
5. 迴圈 第3步 和 第4步
6. 釋放資源
*/
public class FileCopy {
public static void main(String[] args) throws IOException {
//1. 創建位元組輸入流對象,用來讀取
FileInputStream fis = new FileInputStream("E:\\test\\java265.jpg");
//2創建位元組輸出流對象,用來寫入//沒有會創建
FileOutputStream fs = new FileOutputStream("java25.com");
//3創建一個數組用來讀取
byte arr[] = new byte[1024 * 8];
int len;//用來計數
while ((len = fis.read(arr)) != -1) {
//從文件中用位元組數組讀取數組,存儲到位元組數組中
// 每讀取到一個內容,就把讀取到的內容寫入到目的地文件
fs.write(arr,0,len);
}
//釋放資源
fs.close();
fis.close();
}
}