Java字節流和字符流

Java I/O操作的步驟

1、使用File類打開一個文件。

2、通過字節流或字符流的子類指定輸出位置。

3、進行讀/寫操作。

4、關閉輸入/輸出。

字節流

InputStream、OutputStream,子類如上圖所示。

InputStream沒有readLine()方法,不能讀取一行。

使用字節流時,不調用close()方法也可以輸出。

public class Demo {
	
	public static void main(String[] args) throws IOException {
    	//字節流輸出到文件
    	File file = new File("D:/workspace/text.txt");
    	OutputStream out = new FileOutputStream(file);
    	String str = "Hello World!";
    	byte[] b = str.getBytes();
    	out.write(b);
	}
	
}

字符流

Reader、Writer,子類如上圖所示。

BufferedReader有readLine()方法,可以讀取一整行。

使用字符流時,要調用close()方法完成輸出,如果不使用close()方法,可以用flush()方法清除緩衝區,也可以完成輸出。

public class Main {
	
    public static void main(String[] args) throws IOException {
	//	字符流輸出到文件
    	File file = new File("D:/workspace/text.txt");
    	Writer out = new FileWriter(file);
    	String str = "hello java";
    	out.write(str);
    	out.close();
	//	out.flush(); // 強制清空緩衝區,這樣就可以在沒有close的情況下輸出到文件
    }
    
}

字節流轉字符流--InputStreamReader

字符流轉字節流--OutputStreamWriter

public class Demo {
	
	public static void main(String[] args) throws IOException {
		// 讀取文件
    	BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("D:/workspace/text.txt")));
    	// 輸出到另一個文件
    	BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("D:/workspace/ceshi.txt")));
    	
    	String str = null;
    	while((str = br.readLine()) != null) {
    		bw.write(str); // 輸出
    		bw.newLine(); // 換行
    		bw.flush(); // 清空緩衝區,才能輸出
    	}
    	
    	br.close();
	}
	
}

說明

1、比較常用的形式如下一行:

BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("D:/workspace/text.txt")));

上面這一行相當於下面這幾行:

File file = new File("D:/workspace/text.txt"); // 打開一個文件
FileInputStream fis = new FileInputStream(file); // 讀取字節流
InputStreamReader isr = new InputStreamReader(fis); // 字節流轉換成字符流
BufferedReader br = new BufferedReader(isr); // 字符流轉換成字符緩衝輸入流

2、將字符流轉換成字符緩衝輸入流,是因爲在緩衝區裏面讀取數據比較快,提高效率。

3、從鍵盤讀入,一般輸出:

public class Main {
	
    public static void main(String[] args) throws IOException {
    	BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    	BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
    	
    	String str = null;
    	
    	while((str = br.readLine()) != null) {
    		bw.write(str);
    		bw.newLine();
    		bw.flush();
    	}
    	
    	br.close();
    }
    
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章