package cn.file;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
/**
* 文件輸出流;
*
* 今天抽空整理一篇關於Java文件輸出流相關的小Demo;
*
* 首先我們要了解什麼是IO流;
* 流即我們所說的流向;
* 那麼在計算機中的流向則是跟內存相關的數據流向有關;因此還做了分類;
* 今天要分享的文件輸出流就是其中的一種;
*
* 在開始之前,做一下基礎的填白;
* 我們知道,在計算機中的數據文件,不管是視頻(Video,vwdm...),圖片(jpg,JPEG,png..),文本(txt,db...)都是以二進制數字的形式保存下來的;
* 這些數據都是一個個的字節數據;所以在數據移動的時候其實就是在移動相應的二進制字節數據;
* 那麼接下來就開始我們對於流的認識;
*
* 輸入流: 在計算機中我們將流向內存的數據流動稱爲輸入流;即input;
* 輸出流: 將流出內存的數據流動稱爲輸出流;即output;
*
* 對於流的類型也有對應的分類;主要分爲兩類:字節流,字符流;
* 字節流: 所謂的字節流就是指以字節爲單位進行數據讀寫的流;
* 字符流: 而字符流是指以字符單位進行數據讀寫的流;
*
* 那麼在Java中我們常操作的主要是java.io下面的接口;
* 還是和流的分類一樣,這些接口按照層級劃分,頂層的類主要有:
* 字節流 字節輸入流:InputStream; 字節輸出流:OutputStream;
* 字符流 字符輸入流:Reader; 字符輸出流:Writer;
* 好
* 還是和以往一樣,先創建一個自己的測試類;
* @author Administrator
*
*/
public class FileTest {
/**
* Java主函數|入口;
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
// path: 初始化一個地址;(\\標示\,用作轉義)
String path = "D:\\2020\\a.txt";
/**
* String.getBatys()是String類提供的一個數組轉化的方法;
* 作用:
* 用來將字符串數據轉化爲數組用;
*/
byte[] bs = path.getBytes();
/**
* 實例化一個指定地址的File對象file;
*/
File file = new File(path);
/**
* 實例化一個指定File對象的文件輸出流對象fosA;
* 需要注意:
* 直接指定File對象獲取到的這種輸出流對象會抹除掉原有文件內的數據;
* 除非在構造中調用是否抹除的Boolean申明;才能保留原始文件內的數據,進行數據追加;
* 例如:
* 如果要數據追加: new FileOutputStream(file,true);
* 如果要數據抹除,重新裝載數據: new FileOutputStream(file,false);
*/
FileOutputStream fosA = new FileOutputStream(file);
/**
* 實例化一個指定地址的文件輸出流對象fosB;
* 這裏的指定初始化也是一樣的;
* 如果以直接指定地址的方式來獲取文件輸出流對象,也是會抹除掉原由文件的數據內容;
* 除非在構造中調用是否抹除的Boolean申明;才能保留原始文件內的數據,進行數據追加;
* 例如:
* 如果要數據追加: new FileOutputStream("D:\\2020\\b.txt",true);
* 如果要數據抹除,重新裝載數據: new FileOutputStream("D:\\2020\\b.txt",false);
*/
FileOutputStream fosB = new FileOutputStream("D:\\2020\\b.txt");
/**
* 字節數據寫入;
*
* 1. 寫入單個字節;
* 2. 寫入字節數組;
* 3. 寫入字節數組,從指定下標位off開始,寫入指定的長度length;
*
* 注:
* \r表示: 回車符(return);
* \n標示: 換行符(newline);
*
* Windows系統裏,每行結尾爲回車+換行;所以是\r\n;
* Unix系統裏,每行的結尾只有換行;即\n;
* Mac系統裏,每行的結尾是回車;即\r;(從Mac OS開始同Linux系統統一)
*/
fosB.write('g');
fosB.write("\r\n".getBytes());
fosB.write(bs);
fosB.write("\r\n".getBytes());
fosB.write(bs,3,4);
fosB.write("\r\n".getBytes());
// 資源釋放;
fosA.close();
fosB.close();
}
}
文件輸入流:
https://blog.csdn.net/dalei9243/article/details/106807749
Java字節流-文件輸入/輸出流的簡單示例:
https://blog.csdn.net/dalei9243/article/details/106838152