Java FileInputStream與FileOutputStream使用詳解
什麼是InputStream和OutputStream?
InputStream和OutputStream是抽象類,是所有字節輸入流和輸出流的父類。這裡,我們首先要分清楚兩個概念:
- InputStream(輸入流):輸入流是用來讀入數據的。- – – > > >讀入
- OutputStream(輸出流):輸出流是用來寫出數據的。- – – > > >寫出
文件輸入流——FileInputStream
FileInputStream 從文件系統中的某個文件中獲得輸入字節。
構造方法
//通過打開一個到實際文件的連接來創建一個 FileInputStream,該文件通過文件系統中的 File 對象 file 指定。 public FileInputStream(File file); //通過打開一個到實際文件的連接來創建一個 FileInputStream,該文件通過文件系統中的路徑名 name 指定。 public FileInputStream(String name);
常用的方法
從輸入流中讀取一個字節大小的數據
//從此輸入流中讀取一個數據字節。 public int read();
從輸入流一次讀取一個字節數組
//從此輸入流中將最多 b.length 個字節的數據讀入一個 byte 數組中。 public int read(byte[] b); //從此輸入流中將最多 len 個字節的數據讀入一個 byte 數組中。off:目標數組 b 中的起始偏移量。 public int read(byte[] b,int off,int len);
從文件中讀取數據:
import java.io.FileInputStream; /** * FileInputStream:節點流(低級流),從文件中讀入數據 * @author Administrator * */ public class FISDemo01 { public static void main(String[] args){ String content=null; try { int size=0; //定義一個字節緩沖區,該緩沖區的大小根據需要來定義 byte[] buffer=new byte[1024]; FileInputStream fis=new FileInputStream("FOSDemo.txt"); //循環來讀取該文件中的數據 while((size=fis.read(buffer))!=-1){ content=new String(buffer, 0, size); System.out.println(content); } //關閉此文件輸入流並釋放與此流有關的所有系統資源。 fis.close(); } catch (Exception e) { e.printStackTrace(); } } }
文件輸出流——FileOutputStream
文件輸出流是用於將數據寫入到文件中。
構造方法
//創建一個向指定 File 對象表示的文件中寫入數據的文件輸出流。 public FileOutputStream(File file); //創建一個向指定 File 對象表示的文件中寫入數據的文件輸出流。如果第二個參數為 true,則將字節寫入文件末尾處,而不是寫入文件開始處。 public FileOutputStream(File file,boolean append); //創建一個向具有指定名稱的文件中寫入數據的輸出文件流。 public FileOutputStream(String name); //創建一個向具有指定 name 的文件中寫入數據的輸出文件流。如果第二個參數為 true,則將字節寫入文件末尾處,而不是寫入文件開始處。 public FileOutputStream(String name,boolean append);
常用方法
向文件中寫入一個字節大小的數據
//向文件中寫入一個字節大小的數據 public void write(int b);
向文件中一次性寫入一個字節數組的數據
//將 b.length 個字節從指定 byte 數組寫入此文件輸出流中。 public void write(byte[] b); //指定 byte 數組中從偏移量 off 開始的 len 個字節寫入此文件輸出流。 public void write(byte[] b,int off,int len);
向文件中寫出數據:
import java.io.FileOutputStream; /** * FileOutputStream:節點流(低級流),向文件中寫出數據 * @author Administrator * */ public class FOSDemo01 { public static void main(String[] args){ try { //向文件中寫入字節數組 String font="輸出流是用來寫入數據的!"; FileOutputStream fos = new FileOutputStream("FOSDemo.txt"); fos.write(font.getBytes()); //關閉此文件輸出流並釋放與此流有關的所有系統資源。此文件輸出流不能再用於寫入字節。 如果此流有一個與之關聯的通道,則關閉該通道。 fos.close(); } catch (Exception e) { e.printStackTrace(); } } }
使用FileInputStream和FileOutputStream實現文件的復制
import java.io.FileInputStream; import java.io.FileOutputStream; /** * 使用文件輸入流和文件輸出流實現文件的復制 * @author Administrator * */ public class SummaryFISAndFOS { public static void main(String[] args){ /** * 1.先將文件中的內容讀入到輸入流中 * 2.將輸入流中的數據通過輸出流寫入到目標文件中 * 3.關閉輸入流和輸出流 */ try { long begin=System.currentTimeMillis(); //從輸入流中讀取數據 FileInputStream fis=new FileInputStream("FOSDemo.txt"); //向輸出流中寫入數據 FileOutputStream fos=new FileOutputStream("FISAndFOSDest.txt"); //先定義一個字節緩沖區,減少I/O次數,提高讀寫效率 byte[] buffer=new byte[10240]; int size=0; while((size=fis.read(buffer))!=-1){ fos.write(buffer, 0, size); } fis.close(); fos.close(); long end=System.currentTimeMillis(); System.out.println("使用文件輸入流和文件輸出流實現文件的復制完畢!耗時:"+(end-begin)+"毫秒"); } catch (Exception e) { e.printStackTrace(); } //解決JNI問題(Java Native Interface) System.exit(0); } }
運行結果:
使用文件輸入流和文件輸出流實現文件的復制完畢!耗時:17毫秒
以上基本上就是我們經常用到的方法的介紹,記得最後一定要close()哦!
到此這篇關於Java FileInputStream與FileOutputStream使用詳解的文章就介紹到這瞭,更多相關Java FileInputStream與FileOutputStream內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- Java中IO流解析及代碼實例詳解
- Java IO之字節輸入輸出流詳解
- Java BufferedOutputStream類的常用方法講解
- 圖文詳解Java中的字節輸入與輸出流
- Java基於BIO實現文件上傳功能