ava.io.InputStream & java.io.FileInputStream
阿新 • • 發佈:2019-04-05
作用 txt print byte 文件復制 exce 方法參數 end read
java.io.InputStream & java.io.FileInputStream
java.io.InputStream,這個抽象類是表示字節輸入流的超類,這個抽象類的共性的方法有:
方法 | 作用 |
---|---|
int read() | 從輸入流中讀取數據的下一個字節,並返回,到末尾就返回-1 |
int read(byte[] b) | 從輸入流中讀取一定數量的字節,並將其存儲在緩沖區數組b之中 |
void close() | 關閉輸入流,並釋放與輸入流相關的系統資源 |
java.io.FileInputStream extends InputStream
構造方法
構造方法 | 作用 |
---|---|
FileInputStream(String name) | 創建一個FileInputStream對象,把該對象指向構造方法參數中指定的文件 |
FileInputStream(File file) | 創建一個FileInputStream對象,把該對象指向構造方法參數中指定的文件 |
參數:String name(文件路徑)、File file(文件對象)
2、讀取文件
java程序 --> JVM --> OS --> OS調用讀取數據的方法 --> 讀取文件
3、字節輸入流讀取文件的步驟
- 創建FileInputStream對象,構造方法中指定要讀取的文件(路徑名或者文件對象)
- 使用FileInputStream對象的方法read,讀取文件
- 使用FileInputStream對象的方法close,釋放資源
package cn.zhuobo.day14.streamOutput; import java.io.FileInputStream; import java.io.IOException; public class Demo02FileInputStream { public static void main(String[] args) throws IOException { FileInputStream fis = new FileInputStream("/home/zhuobo/Desktop/a.txt"); /*int i = fis.read(); System.out.println(i);// 98 i = fis.read(); System.out.println(i);// 99 i = fis.read(); System.out.println(i);// 104*/ int i = 0; while ((i = fis.read()) != -1) { System.out.println(i); }// 循環讀取直到末尾,-1是末尾 } }
4、字節輸入流一次讀取一個字節的原理
每次指針向後移動一個單位
5、一次讀取多個字節
使用int read(byte[] b)
byte[] bytes = new byte[5];// 每次讀取最多5個,但是一般定義長度為1024
int len = fis.read(bytes);// len指的是讀取的有效字節個數
String str = new String(bytes);
System.out.println(len);
System.out.println(str);
byte[] bytes = new byte[1024];
int len = 0;
while ((len = fis.read(bytes)) != -1) {
System.out.println((new String(bytes)).trim());
}
6、文件復制練習
原文件-->讀出來-->寫進去-->目標文件
package cn.zhuobo.day14.streamOutput;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class FileCopy {
public static void main(String[] args) throws IOException {
File fileDes = new File("/home/zhuobo/Desktop/22.png");
FileOutputStream fos = new FileOutputStream(fileDes);
File fileSource = new File("/home/zhuobo/Desktop/dir/1.png");
FileInputStream fis = new FileInputStream(fileSource);
int len = 0;
byte[] bytes = new byte[1024];
while((len = fis.read(bytes)) != -1) {
fos.write(bytes, 0, len);
}
// 先關閉寫的流(output)再關閉讀的流(input)
fos.close();
fis.close();
}
ava.io.InputStream & java.io.FileInputStream