InputStream位元組輸入流
OutputStream位元組輸出流
用于以位元組的形式讀取和寫入資料
1,ASCII碼 概念
所有的資料存放在計算機中都是以數字的形式存放的。 是以字母就需要轉換為數字才能夠存放。
比如A就對應的數字65,a對應的數字97. 不同的字母和符号對應不同的數字,就是一張碼表。
ASCII是這樣的一種碼表。 隻包含簡單的英文字母,符号,數字等等。 不包含中文,德文,俄語等複雜的。
2,以位元組流的形式讀取檔案内容
InputStream是位元組輸入流,同時也是抽象類,隻提供方法聲明,不提供方法的具體實作。
FileInputStream 是InputStream子類,以FileInputStream 為例進行檔案讀取
// FileInputStream 繼承了 InputStream
public class FileInputStream extends InputStream
public class AtWill {
public static void main(String[] args) {
try {
//準備檔案其中的内容是AB,對應的ASCII分别是65 66
File f =new File("H:\\碼雲project\\gogo\\lala2.txt");
//建立基于檔案的輸入流
FileInputStream fis =new FileInputStream(f);
//建立位元組數組,其長度就是檔案的長度
byte[] all =new byte[(int) f.length()];
//以位元組流的形式讀取檔案所有内容
fis.read(all);
for (byte b : all) {
//列印出來是65 66
System.out.println(b);
}
//每次使用完流,都應該進行關閉
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
3,以位元組流的形式向檔案寫入資料
OutputStream是位元組輸出流,同時也是抽象類,隻提供方法聲明,不提供方法的具體實作。
FileOutputStream 是OutputStream子類,以FileOutputStream 為例向檔案寫出資料
// 和FileInputStream一樣 繼承了 InputStream
public class FileOutputStream extends OutputStream
public class AtWill {
public static void main(String[] args) {
try {
// 準備檔案test6其中的内容是空的
File f = new File("H:\\碼雲project66\\test6.txt");
// 準備長度是2的位元組數組,用88,89初始化,其對應的字元分别是X,Y
byte data[] = { 88, 89 };
// 建立基于檔案的輸出流
FileOutputStream fos = new FileOutputStream(f);
// 把資料寫入到輸出流
fos.write(data);
// 關閉輸出流
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
注意: 如果檔案 H:\碼雲project\test6 不存在,寫出操作會自動建立該檔案。
但是如果是檔案 H:\碼雲project666\test6,而目錄 碼雲project666 又不存在,會抛出異常
根據:IO知識點(一)—— Java的 File類,以及常用方法
在建立一個空檔案之前,通常都會建立父目錄,多層目錄也會建立成功
public class AtWill {
public static void main(String[] args) {
try {
// 準備檔案test6其中的内容是空的
File f = new File("H:\\碼雲project66\\test6.txt");
f.getParentFile().mkdirs();
try {
f.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
// ......
} catch (IOException e) {
e.printStackTrace();
}
}
}
參考來源于:
http://how2j.cn/k/io/io-bytestream/340.html?p=48616