Java_字節流-FileOutputStream文件輸出流紀要

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章