您好,登錄后才能下訂單哦!
這篇文章主要介紹“Java中FileInputStream與FileOutputStream的用法”,在日常操作中,相信很多人在Java中FileInputStream與FileOutputStream的用法問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Java中FileInputStream與FileOutputStream的用法”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!
InputStream和OutputStream是抽象類,是所有字節(jié)輸入流和輸出流的父類。這里,我們首先要分清楚兩個概念:
InputStream(輸入流):輸入流是用來讀入數(shù)據(jù)的。- - - > > >讀入
OutputStream(輸出流):輸出流是用來寫出數(shù)據(jù)的。- - - > > >寫出
FileInputStream 從文件系統(tǒng)中的某個文件中獲得輸入字節(jié)。
//通過打開一個到實際文件的連接來創(chuàng)建一個 FileInputStream,該文件通過文件系統(tǒng)中的 File 對象 file 指定。 public FileInputStream(File file); //通過打開一個到實際文件的連接來創(chuàng)建一個 FileInputStream,該文件通過文件系統(tǒng)中的路徑名 name 指定。 public FileInputStream(String name);
//從此輸入流中讀取一個數(shù)據(jù)字節(jié)。 public int read();
//從此輸入流中將最多 b.length 個字節(jié)的數(shù)據(jù)讀入一個 byte 數(shù)組中。 public int read(byte[] b); //從此輸入流中將最多 len 個字節(jié)的數(shù)據(jù)讀入一個 byte 數(shù)組中。off:目標(biāo)數(shù)組 b 中的起始偏移量。 public int read(byte[] b,int off,int len);
import java.io.FileInputStream; /** * FileInputStream:節(jié)點流(低級流),從文件中讀入數(shù)據(jù) * @author Administrator * */ public class FISDemo01 { public static void main(String[] args){ String content=null; try { int size=0; //定義一個字節(jié)緩沖區(qū),該緩沖區(qū)的大小根據(jù)需要來定義 byte[] buffer=new byte[1024]; FileInputStream fis=new FileInputStream("FOSDemo.txt"); //循環(huán)來讀取該文件中的數(shù)據(jù) while((size=fis.read(buffer))!=-1){ content=new String(buffer, 0, size); System.out.println(content); } //關(guān)閉此文件輸入流并釋放與此流有關(guān)的所有系統(tǒng)資源。 fis.close(); } catch (Exception e) { e.printStackTrace(); } } }
文件輸出流是用于將數(shù)據(jù)寫入到文件中。
//創(chuàng)建一個向指定 File 對象表示的文件中寫入數(shù)據(jù)的文件輸出流。 public FileOutputStream(File file); //創(chuàng)建一個向指定 File 對象表示的文件中寫入數(shù)據(jù)的文件輸出流。如果第二個參數(shù)為 true,則將字節(jié)寫入文件末尾處,而不是寫入文件開始處。 public FileOutputStream(File file,boolean append); //創(chuàng)建一個向具有指定名稱的文件中寫入數(shù)據(jù)的輸出文件流。 public FileOutputStream(String name); //創(chuàng)建一個向具有指定 name 的文件中寫入數(shù)據(jù)的輸出文件流。如果第二個參數(shù)為 true,則將字節(jié)寫入文件末尾處,而不是寫入文件開始處。 public FileOutputStream(String name,boolean append);
//向文件中寫入一個字節(jié)大小的數(shù)據(jù) public void write(int b);
//將 b.length 個字節(jié)從指定 byte 數(shù)組寫入此文件輸出流中。 public void write(byte[] b); //指定 byte 數(shù)組中從偏移量 off 開始的 len 個字節(jié)寫入此文件輸出流。 public void write(byte[] b,int off,int len);
import java.io.FileOutputStream; /** * FileOutputStream:節(jié)點流(低級流),向文件中寫出數(shù)據(jù) * @author Administrator * */ public class FOSDemo01 { public static void main(String[] args){ try { //向文件中寫入字節(jié)數(shù)組 String font="輸出流是用來寫入數(shù)據(jù)的!"; FileOutputStream fos = new FileOutputStream("FOSDemo.txt"); fos.write(font.getBytes()); //關(guān)閉此文件輸出流并釋放與此流有關(guān)的所有系統(tǒng)資源。此文件輸出流不能再用于寫入字節(jié)。 如果此流有一個與之關(guān)聯(lián)的通道,則關(guān)閉該通道。 fos.close(); } catch (Exception e) { e.printStackTrace(); } } }
import java.io.FileInputStream; import java.io.FileOutputStream; /** * 使用文件輸入流和文件輸出流實現(xiàn)文件的復(fù)制 * @author Administrator * */ public class SummaryFISAndFOS { public static void main(String[] args){ /** * 1.先將文件中的內(nèi)容讀入到輸入流中 * 2.將輸入流中的數(shù)據(jù)通過輸出流寫入到目標(biāo)文件中 * 3.關(guān)閉輸入流和輸出流 */ try { long begin=System.currentTimeMillis(); //從輸入流中讀取數(shù)據(jù) FileInputStream fis=new FileInputStream("FOSDemo.txt"); //向輸出流中寫入數(shù)據(jù) FileOutputStream fos=new FileOutputStream("FISAndFOSDest.txt"); //先定義一個字節(jié)緩沖區(qū),減少I/O次數(shù),提高讀寫效率 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("使用文件輸入流和文件輸出流實現(xiàn)文件的復(fù)制完畢!耗時:"+(end-begin)+"毫秒"); } catch (Exception e) { e.printStackTrace(); } //解決JNI問題(Java Native Interface) System.exit(0); } }
運行結(jié)果:
使用文件輸入流和文件輸出流實現(xiàn)文件的復(fù)制完畢!耗時:17毫秒
到此,關(guān)于“Java中FileInputStream與FileOutputStream的用法”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。