萌新學Java之初入門徑八----位元組流和字元流
流
## 位元組流 * 將文字圖片音訊等檔案 轉成位元組 進行資料傳輸 * * * 輸入流 * 輸出流 * * 參照物(程式) * * 程式 —-> 檔案 輸出流 寫檔案 * 檔案 —-> 程式 輸出流 讀檔案 * * * * 所有位元組流的父類 * OutputStream 輸出流 * InputStream 輸入流
1.//建立一個位元組輸出流 寫檔案 //建立流 繫結寫入檔案的路徑 //寫入時 系統會幫你創建出檔案
FileOutputStream fos = new FileOutputStream(“/Users/lanou/Desktop/Test/gorilla.txt”);
//寫入方法
//該方法是按ASCII碼寫入檔案
fos.write(48);
fos.write(50);
fos.write(60);
//利用位元組陣列寫入
byte[] b = {66,67,68,69};
fos.write(b);
//"wanglong" 轉成 位元組陣列寫
fos.write("wanglong".getBytes());
//關閉資源
fos.close();
2.//讀取檔案
FileInputStream fis = new FileInputStream(“/Users/lanou/Desktop/Test/gorilla.txt”); //讀取 //一個位元組一個位元組讀取 按照ASCII碼讀取 int num = fis.read(); System.out.println((char)num); num = fis.read(); System.out.println((char)num); num = fis.read(); System.out.println((char)num); num = fis.read(); System.out.println((char)num); num = fis.read(); System.out.println((char)num); //當檔案讀取完畢時,返回-1 //關閉資源 fis.close();
3.//讀取檔案
FileInputStream fis = new FileInputStream("/Users/lanou/Desktop/Test/gorilla.txt"); //利用位元組陣列讀取 //實際上把讀取的內容放入了陣列中 //fis.read(b) 方法返回值 是讀取到有效位元組數 //讀完檔案 返回-1 //一般填1024或者1024的整數倍 byte[] b = new byte[2]; int num = fis.read(b); System.out.println(num);
4.//讀取檔案
FileInputStream fis = new FileInputStream(“/Users/lanou/Desktop/Test/gorilla.txt”); //利用陣列 迴圈讀取 byte[] b = new byte[1024];
//接收有效長度
int len = 0;
while ((len = fis.read(b)) != -1) {
//使用字串的構造方法列印
System.out.println(new String(b,0,len));
}
fis.close();
字元流(讀寫文件)
- Writer
- Reader
(抽象類 所有字元流的父類)
FileWriter
- FileReader
1.//建立字元輸出流
FileWriter fw = new FileWriter(“/Users/lanou/Desktop/Test/wl.txt”); //寫入檔案 fw.write(65); //重新整理(會將內容 寫入檔案中) fw.flush();
//字元陣列寫入
char[] c = {'6','8'};
fw.write(c);
fw.flush();
//字串直接寫入
//mac 換行 \n
//win 換行 /r/n
fw.write("鵝鵝鵝\n曲項向天歌");
fw.flush();
//關閉資源
//關閉前 系統會自動重新整理
fw.close();
2.//建立字元輸入流
FileReader fr = new FileReader(“/Users/lanou/Desktop/Test/wl.txt”); //讀取檔案 //單個讀取 // int num = 0; // // while ((num = fr.read()) != -1) { // System.out.print((char)num); // } // fr.close();
//陣列讀取
char[] b = new char[1024];
int len = 0;
while ((len = fr.read(b)) != -1) {
System.out.println(new String(b,0,len));
}