Java FileInputStream與FileOutputStream使用詳解
InputStream和OutputStream是抽象類,是所有字節輸入流和輸出流的父類。這里,我們首先要分清楚兩個概念:
InputStream(輸入流):輸入流是用來讀入數據的。- - - > > >讀入 OutputStream(輸出流):輸出流是用來寫出數據的。- - - > > >寫出文件輸入流——FileInputStreamFileInputStream 從文件系統中的某個文件中獲得輸入字節。
構造方法//通過打開一個到實際文件的連接來創建一個 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內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!
相關文章: