字節流寫出
OutputStream抽象類
- 此抽象類是表示輸出字節流的所有類的超類。輸出流接受輸出字節並將這些字節發送到某個接收器。
- 常用方法:
>void close()
> 關閉此輸出流並釋放與此流有關的所有系統資源。
>
>void flush()
> 刷新此輸出流並強制寫出所有緩衝的輸出字節。
>
>void write(byte[] b)
> 將 b.length 個字節從指定的 byte 數組寫入此輸出流。
>
>void write(byte[] b, int off, int len)
> 將指定 byte 數組中從偏移量 off 開始的 len 個字節寫入此輸出流。
>
> abstract void write(int b)
> 將指定的字節寫入此輸出流。
FileOutputStream子類
- 直接插在文件上,直接寫出文件數據
創建對象:
- FileOutputStream(String name)
創建一個向具有指定名稱的文件中寫入數據的輸出文件流。- FileOutputStream(File file)
創建一個向指定 File 對象表示的文件中寫入數據的文件輸出流。- FileOutputStream(File file, boolean append) –追加
創建一個向指定 File 對象表示的文件中寫入數據的文件輸出流。
BufferedOutputStream子類
- 該類實現緩衝的輸出流。通過設置這種輸出流,應用程序就可以將各個字節寫入底層輸出流中,而不必針對每次字節寫入調用底層系統。
創建對象
- BufferedOutputStream(OutputStream out)
- 創建一個新的緩衝輸出流,以將數據寫入指定的底層輸出流。
字符流寫出
Writer抽象類: 寫入字符流的抽象類。
常用方法:
- void write(char[] cbuf)
寫入字符數組。- abstract void write(char[] cbuf, int off, int len)
寫入字符數組的某一部分。- void write(int c)
寫入單個字符。- void write(String str)
寫入字符串。- void write(String str, int off, int len)
寫入字符串的某一部分。- abstract void close()
關閉此流,但要先刷新它。
OutputStreamWriter子類
OutputStreamWriter,是字符流通向字節流的橋樑:可使用指定的 charset 將要寫入流中的字符編碼成字節。它使用的字符集可以由名稱指定或顯式給定,否則將接受平臺默認的字符集。
創建對象:
- OutputStreamWriter(OutputStream out, String charsetName)
創建使用指定字符集的 OutputStreamWriter。- OutputStreamWriter(OutputStream out)
創建使用默認字符編碼的 OutputStreamWriter。
public class rr {
public static void main(String[] args) throws Exception {
// method1();//字節寫出
method2();//字符寫出
}
private static void method2() throws Exception {
Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(new File("D:\\\\teach\\\\a.txt")) , "utf-8"));
long s = System.currentTimeMillis();
for(int i = 48 ; i < 1000000; i++) {
out.write(i);
}
s = System.currentTimeMillis() - s;
System.out.println(s + "--");//266
out.close();
}
private static void method1() throws Exception {
long s = System.currentTimeMillis();
OutputStream out = new FileOutputStream(new File("D:\\teach\\a.txt"));
for(int i = 48 ; i < 1000000; i++) {
out.write(i);
}
s = System.currentTimeMillis() - s;
System.out.println(s + "--");//3484
long ss = System.currentTimeMillis();
OutputStream out2 = new BufferedOutputStream(new FileOutputStream(new File("D:\\teach\\a2.txt")));
for(int i = 48 ; i < 1000000; i++) {
out2.write(i);
}
ss = System.currentTimeMillis() - ss;
System.out.println(ss + "==");//54
out.close();
out2.close();
}
}