什麼是輸入流?
把硬盤中的數據讀取到內存中使用
什麼是輸出流?
將內存中的數據寫入到硬盤
輸入輸出的說法是從內存的角度上出發闡述的(僅個人理解)。
瞭解一下:一個字符等於兩個字節一個字節等於八個二進制,計算機上的所有數據文件都是以二進制的形式保存的,在打開文件時文件編輯器會根據文件中的二進制碼通過查詢編碼表(中文系統默認編碼表GBK)轉化爲字符顯示出來,如果二進制碼在(0-127)之間會查詢ascii碼編碼表然後轉化爲字符。
字節輸出流
OutputStream是所有字節輸出流的父類,我們瞭解一下OutputStream的子類之一 FileOutputStream
FileOutputStream常用的構造方法
//1.
//參數1:文件路徑 參數2:(寫入內容方式)false將文件的內容覆蓋 true在文件內容後添加
FileOutputStream fos0 = new FileOutputStream("E:\\上傳的文件\\a.text",false);
//2.
//參數1:文件路徑 參數2:(寫入內容方式)false將文件的內容覆蓋 true在文件內容後添加
File file = new File("E:\\上傳的文件\\a.text");
FileOutputStream fos02 = new FileOutputStream(file,false);
構造方法的作用:
1.創建一個人FileOutputStream對象
2.如果傳的路徑所指文件不存在,就新建這個文件
3.讓創建的FileOutputStream對象指向參數路徑所指文件
FileOutputStream常用的方法
//向文件寫入單個字節 !寫入時會將數字或其他數據轉化爲二進制
fos0.write(97);
//向文件寫入字節數組如果字節數組中有負數那麼這個負數將和它相鄰後面的字節組成一個字符
fos0.write("我是123".getBytes());
//向文件寫入字節數組中指定元素,從字節數組索引off開始到索引len停止
fos0.write("我是123".getBytes(),1,3);
//關閉流
fos0.close();
字節流輸出流寫入數據過程:java程序>JVM(java虛擬機)>OS(操作系統)>OS調用寫數據的方法將數據寫入到文件中
字節輸入流
InputStream是所有字節輸入流的父類,我們瞭解一下InputStream的子類之一 FileInputStream
FileInputStream常用的構造方法
//1.
//傳入路徑
FileInputStream fis = new FileInputStream("E:\\上傳的文件\\a.text");
//2.
//傳入File對象
File file = new File("E:\\上傳的文件\\a.text");
FileInputStream常用的方法
//1.讀取一個字節 返回值爲讀到的字節 如果將文件數據讀取完畢返回-1
int a = fis.read();
//2.讀取多個字節,返回值爲讀取到字節的個數,如果將文件數據讀取完畢返回-1
byte[] bytes = new byte[4];
a=fis.read(bytes);
//關閉流
fos0.close();
輸出讀到的數據
//fis是FileOutputStream對象
byte[] bytes = new byte[4];
while((a=fis.read(bytes))!=-1){
System.out.println(new String(bytes,0,a));
}
字節流輸入流讀取數據過程:java程序>JVM(java虛擬機)>OS(操作系統)>OS調用讀數據的方法將數據讀入到內存
實戰小項目-------代碼實現複製
public static void main(String[] args) throws IOException {
//要複製文件的位置
FileInputStream fis = new FileInputStream("C:\\Users\\lenovo\\Desktop\\素材\\b.png");
//要粘貼文件的位置
FileOutputStream fos = new FileOutputStream("E:\\上傳的文件\\b.png");
byte[] bytes = new byte[1024];
int len = 0;
while((len=fis.read(bytes))!=-1){
fos.write(bytes);
}
}
新手上路,請大佬們多多關照,歡迎指點