### 簡單的說明
從文件中讀取和寫入數據,我們要使用FileInputStream和FileOutputStream類來實現。只是要注意的是,這二個類處理的是字節(byte)型文件。
### FileInputStream和FileOutputStream
### FileInputStream類
構造方法:
FileInputStream(String path)
FileInputStream(File file)
關鍵方法:
read()
read(byte[] buffer, int byteOffset, int byteCount)
### FileOutputStream類
構造方法:
FileOutputStream(String path)
FileOutputStream(File file)
關鍵方法:
write(int oneByte)
write(byte[] buffer, int byteOffset, int byteCount)
### 一個測試的Demo
定義三個方法:
(1)testFileInputStream方法—讀取文件內容
FileInputStream的使用方法:
~~~
//1.創建一個File對象
//2.創建一個FileInputStream對象
//3.調用read方法,讀取內容數據
//4. 關閉對應的流
~~~
(2)testFileOutputStream方法—-往文件寫內容
FileOutputStream的使用方法:
~~~
//1.創建一個File文件
//2.創建一個FileOutputStream對象
//3.調用write方法寫入數據
//4.關閉對應的輸出流
~~~
(3)copyFile方法—-復制文件的方法
~~~
//1.定義輸入和輸出的文件
//2.定義輸入流和輸出流的對象
//3.執行復制操作
//4.關閉對應的流,先關輸出流,后關輸入流
~~~
~~~
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class FileInputStreamFileOutputStream {
//5.同時使用FileOutputStream和FileInputStream,實現二個文件的復制
//參數src為輸入文件,參數des為輸出文件,byteLength為每次復制的字節數
public static void copyFile(String src,String des,int byteLength){
FileInputStream fis = null;
FileOutputStream fos = null;
try {
//定義輸入和輸出的文件
File fin = new File(src);
File fout = new File(des);
//定義輸入流和輸出流的對象
fis = new FileInputStream(fin);
fos = new FileOutputStream(fout);
//3.執行復制操作
byte[] b = new byte[byteLength];
int len;
while ((len = fis.read(b)) != -1) {
fos.write(b, 0, len);
}
}catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
//4.關閉對應的流,先關輸出流,后關輸入流
if (fos != null) {
try {
fos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(fis != null){
try {
fis.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
//4.FileOutputStream的使用
public static void testFileOutputStream(){
//2.創建一個FileOutputStream對象
FileOutputStream fos = null;
try {
//創建一個File文件
File f1 = new File("file_output_stream.txt");
fos = new FileOutputStream(f1);
String str= new String("test FileOutputStream");
//調用write方法寫入數據
fos.write(str.getBytes());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
if(fos != null){
//關閉對應的輸出流
fos.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
//3.FileInputStream的使用
public static void testFileInputStream(){
//2.創建一個FileInputStream對象
FileInputStream fis = null;
try {
//1.創建一個File對象
File f1 = new File("hello.txt");
fis = new FileInputStream(f1);
byte[] b = new byte[10] ;
int len;
//3.調用read方法,讀取內容數據
while ((len = fis.read(b))!= -1) {
//System.out.print(b.toString());
for(int i=0;i<len;i++){
System.out.print((char)b[i]);
}
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
//4. 關閉對應的流
fis.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
~~~
調用:
~~~
//3.FileInputStream的使
FileInputStreamFileOutputStream.testFileInputStream();
//4.FileOutputStream的使用
FileInputStreamFileOutputStream.testFileOutputStream();
//5.同時使用FileOutputStream和FileInputStream,實現二個文件的復制
long t1 = System.currentTimeMillis();
FileInputStreamFileOutputStream.copyFile("data.bmp","data_01.bmp",10);
long t2 = System.currentTimeMillis();
System.out.print("復制文件消耗的時間:"+(t2 - t1));//100-60 10 -551
~~~
參考資料:
1.FileInputStream api文檔
android_sdk_docs_offline/reference/java/io/FileInputStream.html
2.FileOutputStreamapi文檔
android_sdk_docs_offline/reference/java/io/FileOutputStream.html
3.FileOutputStream與FileInputStream 視頻
- 前言
- Java核心技術之Comparator和Comparable在排序中的應用
- Java核心技術之容器
- Java核心技術之基本數據類型
- java核心技術之正則表達式
- java核心技術之reflect(一):一個系統學習reflect的Demo(精)
- java核心技術之IO流(一)File類
- java核心技術之IO流(二)FileInputStream和FileOutputStream
- java核心技術之IO流(三)FileReader和FileWriter
- java核心技術之IO流(四)BufferedInputStream和BufferedOutputStream
- java核心技術之IO流(五)BufferedReader和BufferedWriter
- java核心技術之IO流(六)DataInputStream和DataOutputStream