JAVA文件讀寫操作詳解
一、讀文件BufferedInputStream
BufferedInputStream必須傳入一個InputStream(一般是FileInputStream)
常用方法:
從該輸入流中讀取一個字節(jié) public int read();
從此字節(jié)輸入流中給定偏移量處開始將各字節(jié)讀取到指定的 byte 數(shù)組中。
public int read(byte[] b,int off,int len)
應(yīng)用實例:
import java.io.BufferedInputStream;
import java.io.FileInputStream;
/**
* BufferedInputStream:緩沖輸入流
* FileInputStream:文件輸入流
*/
public class FileReadToString {
public static void main(String[] args){
try {
FileInputStream fis=new FileInputStream("WynnNi.txt");
BufferedInputStream bis=new BufferedInputStream(fis);
String content=null;
//自定義緩沖區(qū)
byte[] buffer=new byte[10240];
int flag=0;
while((flag=bis.read(buffer))!=-1){
content+=new String(buffer, 0, flag);
}
System.out.println(content);
//關(guān)閉的時候只需要關(guān)閉最外層的流就行了
bis.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}二、寫文件BufferedOutputStream
創(chuàng)建一個新的緩沖輸出流,以將數(shù)據(jù)寫入指定的底層輸出流。
常用方法:
//向輸出流中輸出一個字節(jié)
public void write(int b);//將指定 byte 數(shù)組中從偏移量 off 開始的 len 個字節(jié)寫入此緩沖的輸出流。
public void write(byte[] b,int off,int len);//刷新此緩沖的輸出流。這迫使所有緩沖的輸出字節(jié)被寫出到底層輸出流中。
public void flush();
應(yīng)用實例
/**
* BufferedOutputStream:緩沖輸出流
* FileOutPutStream:文件輸出流
*/
public class StringOutPutToFile {
public static void main(String[] args){
try {
FileOutputStream fos=new FileOutputStream("WynnNi.txt");
BufferedOutputStream bos=new BufferedOutputStream(fos);
String content="xxxxxxxxx!";
bos.write(content.getBytes(),0,content.getBytes().length);
bos.flush();
bos.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}三、實際應(yīng)用場景
被調(diào)用方如何將文件傳輸給調(diào)用方并在本地輸出文件
1、被調(diào)用方將文件讀入緩沖區(qū)byte[]
2、將緩沖區(qū)數(shù)據(jù)轉(zhuǎn)換成String傳遞,String str = Base64.getEncoder().encodeToString(bytes);
3、接收方將String反轉(zhuǎn)為byte[],bytes=Base64.getDecoder().decode(str);
4、接收方將緩沖區(qū)輸出到文件
總結(jié)
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
解決MyBatis返回結(jié)果類型為Boolean的問題
這篇文章主要介紹了解決MyBatis返回結(jié)果類型為Boolean的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-11-11
Java實現(xiàn)遠程控制技術(shù)完整源代碼分享
這篇文章主要為大家詳細介紹了Java實現(xiàn)遠程控制技術(shù)完整源代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-08-08
IntelliJ IDEA 中使用jRebel進行 Java 熱部署教程圖解
Rebel是一款JAVA虛擬機插件,它使得JAVA程序員能在不進行重部署的情況下,即時看到代碼的改變對一個應(yīng)用程序帶來的影響。本文通過圖文并茂的形式給大家介紹了IntelliJ IDEA 中使用jRebel進行 Java 熱部署教程圖解,需要的朋友參考下吧2018-04-04
使用Log4j2代碼方式配置實現(xiàn)線程級動態(tài)控制
這篇文章主要介紹了使用Log4j2代碼方式配置實現(xiàn)線程級動態(tài)控制,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-12-12

