Java FileInputStream與FileOutputStream使用詳解
InputStream和OutputStream是抽象類,是所有字節(jié)輸入流和輸出流的父類。這里,我們首先要分清楚兩個(gè)概念:
InputStream(輸入流):輸入流是用來讀入數(shù)據(jù)的。- - - > > >讀入 OutputStream(輸出流):輸出流是用來寫出數(shù)據(jù)的。- - - > > >寫出文件輸入流——FileInputStreamFileInputStream 從文件系統(tǒng)中的某個(gè)文件中獲得輸入字節(jié)。
構(gòu)造方法//通過打開一個(gè)到實(shí)際文件的連接來創(chuàng)建一個(gè) FileInputStream,該文件通過文件系統(tǒng)中的 File 對(duì)象 file 指定。public FileInputStream(File file);//通過打開一個(gè)到實(shí)際文件的連接來創(chuàng)建一個(gè) FileInputStream,該文件通過文件系統(tǒng)中的路徑名 name 指定。public FileInputStream(String name);常用的方法從輸入流中讀取一個(gè)字節(jié)大小的數(shù)據(jù)
//從此輸入流中讀取一個(gè)數(shù)據(jù)字節(jié)。public int read();從輸入流一次讀取一個(gè)字節(jié)數(shù)組
//從此輸入流中將最多 b.length 個(gè)字節(jié)的數(shù)據(jù)讀入一個(gè) byte 數(shù)組中。public int read(byte[] b);//從此輸入流中將最多 len 個(gè)字節(jié)的數(shù)據(jù)讀入一個(gè) byte 數(shù)組中。off:目標(biāo)數(shù)組 b 中的起始偏移量。public int read(byte[] b,int off,int len);從文件中讀取數(shù)據(jù):
import java.io.FileInputStream;/** * FileInputStream:節(jié)點(diǎn)流(低級(jí)流),從文件中讀入數(shù)據(jù) * @author Administrator * */public class FISDemo01 { public static void main(String[] args){String content=null;try { int size=0; //定義一個(gè)字節(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();} }}文件輸出流——FileOutputStream
文件輸出流是用于將數(shù)據(jù)寫入到文件中。
構(gòu)造方法//創(chuàng)建一個(gè)向指定 File 對(duì)象表示的文件中寫入數(shù)據(jù)的文件輸出流。public FileOutputStream(File file);//創(chuàng)建一個(gè)向指定 File 對(duì)象表示的文件中寫入數(shù)據(jù)的文件輸出流。如果第二個(gè)參數(shù)為 true,則將字節(jié)寫入文件末尾處,而不是寫入文件開始處。public FileOutputStream(File file,boolean append);//創(chuàng)建一個(gè)向具有指定名稱的文件中寫入數(shù)據(jù)的輸出文件流。public FileOutputStream(String name);//創(chuàng)建一個(gè)向具有指定 name 的文件中寫入數(shù)據(jù)的輸出文件流。如果第二個(gè)參數(shù)為 true,則將字節(jié)寫入文件末尾處,而不是寫入文件開始處。public FileOutputStream(String name,boolean append);常用方法向文件中寫入一個(gè)字節(jié)大小的數(shù)據(jù)
//向文件中寫入一個(gè)字節(jié)大小的數(shù)據(jù)public void write(int b);向文件中一次性寫入一個(gè)字節(jié)數(shù)組的數(shù)據(jù)
//將 b.length 個(gè)字節(jié)從指定 byte 數(shù)組寫入此文件輸出流中。public void write(byte[] b);//指定 byte 數(shù)組中從偏移量 off 開始的 len 個(gè)字節(jié)寫入此文件輸出流。 public void write(byte[] b,int off,int len);向文件中寫出數(shù)據(jù):
import java.io.FileOutputStream;/** * FileOutputStream:節(jié)點(diǎn)流(低級(jí)流),向文件中寫出數(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é)。 如果此流有一個(gè)與之關(guān)聯(lián)的通道,則關(guān)閉該通道。 fos.close();} catch (Exception e) { e.printStackTrace();} }}使用FileInputStream和FileOutputStream實(shí)現(xiàn)文件的復(fù)制
import java.io.FileInputStream;import java.io.FileOutputStream;/** * 使用文件輸入流和文件輸出流實(shí)現(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'); //先定義一個(gè)字節(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('使用文件輸入流和文件輸出流實(shí)現(xiàn)文件的復(fù)制完畢!耗時(shí):'+(end-begin)+'毫秒');} catch (Exception e) { e.printStackTrace();}//解決JNI問題(Java Native Interface)System.exit(0); }}
運(yùn)行結(jié)果: 使用文件輸入流和文件輸出流實(shí)現(xiàn)文件的復(fù)制完畢!耗時(shí):17毫秒
以上基本上就是我們經(jīng)常用到的方法的介紹,記得最后一定要close()哦!
到此這篇關(guān)于Java FileInputStream與FileOutputStream使用詳解的文章就介紹到這了,更多相關(guān)Java FileInputStream與FileOutputStream內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章:
1. 使用IDEA編寫jsp時(shí)EL表達(dá)式不起作用的問題及解決方法2. idea自定義快捷鍵的方法步驟3. IntelliJ IDEA設(shè)置條件斷點(diǎn)的方法步驟4. Docker容器如何更新打包并上傳到阿里云5. 刪除docker里建立容器的操作方法6. Docker究竟是什么 為什么這么流行 它的優(yōu)點(diǎn)和缺陷有哪些?7. Django中如何使用Channels功能8. IntelliJ IDEA導(dǎo)出項(xiàng)目的方法9. idea設(shè)置代碼格式化的方法步驟10. IntelliJ IDEA設(shè)置編碼格式的方法

網(wǎng)公網(wǎng)安備