IO位元組輸入輸出流 OutputStream:位元組輸出流 該抽象類是所有位元組輸出流的超類; 定義了一些共性的成員方法: 1.寫入一個位元組 2.寫入位元組數組 3.寫入位元組數組的一部分 4.刷新輸出流,並強制寫出所有緩衝的輸出位元組 5.關閉輸出流並釋放與之有關的所有系統資源 FileOutputStre ...
IO位元組輸入輸出流
OutputStream:位元組輸出流
該抽象類是所有位元組輸出流的超類;
定義了一些共性的成員方法:
1.寫入一個位元組
void write(int b);//b表示位元組
2.寫入位元組數組
void write(byte[] b);//寫入一個位元組數組
3.寫入位元組數組的一部分
void write(byte[] b,int off, int len);//off 表示起始索引,len表示寫幾個
4.刷新輸出流,並強制寫出所有緩衝的輸出位元組
void flush();
5.關閉輸出流並釋放與之有關的所有系統資源
void close();
FileOutputStream :文件位元組輸出流 extends OutputStream
作用:
把記憶體中的位元組數據,寫入到文件中保存
構造方法:
1.創建一個指向File對象表示的文件中寫入數據的文件輸出流
FileOutputStream(File file);
2.創建一個指定名稱的文件中寫入數據的輸出文件流
FileOutputStream(String name);//通俗說就是個文件路徑名
構造方法的作用(也就是他乾什麼事)
1.會根據構造方法的參數,創建一個文件,如果沒有設置追加寫的值,文件已經存在的話,就會覆蓋
2.創建一個FileOutputStream對象
3.將這個對象指向目的地
IO讀寫的過程:
java程式--->JVM--->OS(操作系統)--->調用方法進行讀寫文件
FileOutputStream的使用步驟:
1.創建對象,在構造方法中綁定寫入數據的目的地 2.調用對象中的方法write,把數據寫入到文件中 3.釋放資源
註意:
位元組流操作的是位元組,所以會直接把位元組寫入到文件中;
字元流操作的是字元,先會將字元寫到記憶體的緩衝區中,進行轉換,轉換為位元組,再使用底層的位元組流將數據寫入到文件中
字元輸出流使用實例1
1 FileOutputStream fos= new FileOutputStream("a.txt");//a.txt相對路徑,相對項目目錄下 2 fos.write(97);//寫入一個位元組 3 fos.close();//關閉流並釋放資源
使用實例2:
FileOutputStream fos= new FileOutputStream(new File('a.txt'));//構造方法中傳遞一個File文件對象 byte[] b="你好".getBytes();//使用String類方法將字元串轉換成位元組數組 fos.write(b);//寫入一個位元組數組 fos.close();//關閉資源
追加寫與換行
1.追加寫:boolean append 參數追加寫開關,true是追加,false是不追加,預設是false
FileOutputStream(File file, boolean append); FileOutputStream(String pathname,boolean append);
2.換行
win系統:\r\n
linux:/n
mac:\r
可以使用System類的靜態方法動態獲取換行符
System.getProperty("line.separator");
InputStream:位元組輸入流,該抽象類是所有位元組輸入流的超類
共性的成員方法:
1.讀取一個位元組並返回,沒有位元組返回-1
int read();
2.讀取一定量的位元組數,並存儲到位元組數組中,返回讀取到的位元組數
int read(byte[] b);
3.關閉輸入流並釋放與之有關的所有系統資源
void close();
FileInputStream:文件位元組輸入流 java.lang.FileInputStream extends InputStream
作用:將文件中的數據,以位元組的形式讀取到記憶體中
構造方法:
FileInputStream(File file);//數據源使用File對象 FileInputStream(String pathname);//數據源是一個文件路徑
構造方法的作用:
1.創建一個位元組輸入流的對象
2.會將這個對象指向構造方法中要讀取的數據源
FileInputStream使用步驟:
1.創建對象,綁定構造方法中的數據源 2.調用位元組輸入流的方法read,來讀取文件 3.釋放資源
FileInputStream讀取單位元組實例:
1 //創建對象,綁定源文件 2 FileInputStream fis= new FileInputStream("a.txt");//a.txt是存在的 3 //讀取單位元組。 4 int len=0; 5 while((len=fis.read())!=-1){ 6 System.out.println((char)len);//這裡的輸出就只能是單位元組字元,不能是中文,因為一個中文2個位元組,讀一個位元組就輸出會亂碼; 7 } 8 //關閉流資源 9 fis.close();
FileInputStream讀取位元組數組實例:
//創建輸入流對象 FileInputStream fis=new FileInputStream(new File("a.txt")); //創建要接收位元組的數組 byte[] b= new byte[1024];//這裡一般是1024或者其整數倍 int len =0;//這裡的len是每次讀取的有效個數 while((len= fis.read(b))!=-1){ System.out.println(new String(b,0,len));//這裡使用String類的構造方法,b是位元組數組,0是開始索引,len是個數 } /* 註意: 1.位元組數組的作用:起到緩衝的作用,一次讀取多個位元組存在數組中,提高效率,這個位元組數組的長度一般定義為1024或者是1024的倍數 2返回值int是什麼:每次讀取的有效位元組個數 */