天天看點

IO字元流API常見用法彙總(JAVA)

Don’t bb , show your code.

好了,廢話不多說,下面我将用代碼及注釋給出我在學習JAVA IO字元流後,對它的了解及用法的總結,希望能對初學者們有點幫助。

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.LineNumberReader;

public class 字元流 {
    private static final  String LINE_SEPARATOR=System.getProperty("line.separator");//固定系統換行操作
    
	public static void main(String[] args) throws IOException {
//		fileWritershow();
//		fileReadershow();
//		copytest();//複制檔案另存
//		bufferedWritershow();
//		bufferedReadershow();
//		bufferCopytest();//緩沖區實作檔案的重寫
		LineNumberReadershow();

	}
	
/*
 * 使用裝飾類LineNumberReader實作文檔的按行周遊輸出。
 */
private static void LineNumberReadershow() throws IOException {
	FileReader fr=new FileReader("bufferdemo.txt");
	LineNumberReader lnr=new LineNumberReader(fr);
	String line=null;
	//周遊輸出
	while((line=lnr.readLine())!=null) {
		System.out.println(lnr.getLineNumber());//擷取行号
		System.out.println(line);
	}
	lnr.close();
	}

/*
 * 緩沖區實作檔案的重寫
 */
private static void bufferCopytest() throws IOException {
	//讀
	FileReader fr=new FileReader("bufferdemo.txt");
	BufferedReader br=new BufferedReader(fr);
	
	//寫
	FileWriter fw= new FileWriter("copybufferdemo.txt");
	BufferedWriter bw=new BufferedWriter(fw);
	while(br.ready()) {
		bw.write(br.readLine());//按行寫入
		bw.newLine();
	}
	
	br.close();
	bw.close();
	}

/*
 * 字元流的緩沖區方法操作示範(讀取)
 */
private static void bufferedReadershow() throws IOException {
		FileReader fr=new FileReader("bufferdemo.txt");
		BufferedReader br=new BufferedReader(fr);//建立輸出字元流緩沖區
		while(br.ready()) {
		System.out.println(br.readLine());
		}
		br.close();
	}

/*
 * 字元流的緩沖區方法操作示範(寫入)
 */
private static void bufferedWritershow() throws IOException {
	FileWriter fw= new FileWriter("bufferdemo.txt");
	BufferedWriter bw=new BufferedWriter(fw);//建立緩沖區将輸入字元流放入緩沖區中
	bw.write("緩沖區操作。\r\n寫入成功!!");
	bw.newLine();
	bw.write("用newLine()實作換行。");
	bw.close();		
	}

/*
 * 将檔案複制另存
 * 思路:檔案讀寫操作
 */
private static void copytest() throws IOException {
    //讀
	FileReader fr=new FileReader("demo.txt");//建立打開檔案對象
	char[] buf=new char[1024];
	fr.read(buf);
	fr.close();
	//寫
	FileWriter fw= new FileWriter("copyDemo.txt");
	fw.write(new String(buf));
	fw.close();//關閉流,關閉打開資源,在關閉前會調用flush
	fw=new FileWriter("copyDemo.txt",true);//續寫
	fw.write(LINE_SEPARATOR+"複制成功!!");
	fw.close();
	}

/*
 * 将一些文字存儲到硬碟檔案中
 */
	private static void fileWritershow() throws IOException {
		FileWriter fw= new FileWriter("demo.txt");//建立選擇操作檔案對象,檔案存在會被覆寫
		//寫入資料
		fw.write("大王叫我來巡山!!");//資料已存儲到臨時存儲緩沖區中
		fw.flush();//存儲緩沖區重新整理,資料存儲到目标檔案
		fw.write("\r\n來到山裡轉一轉。"+LINE_SEPARATOR+"調用系統換行操作。");//\r\n  window中的換行操作
		fw.close();//關閉流,關閉打開資源,在關閉前會調用flush
		fw=new FileWriter("demo.txt",true);//續寫
		fw.write(LINE_SEPARATOR+"對檔案内容進行續寫。");
		fw.close();
		
	}
	
/*
 * 讀取檔案輸出 
 */
	private static void fileReadershow() throws IOException  {
		FileReader fr=new FileReader("demo.txt");//建立打開檔案對象
		//用reader中的read方法讀取字元
//		fr.read();//傳回int,
//		int ch=0;
//		while(fr.read()!=-1) {
//			ch=fr.read();
//			System.out.print((char)ch);
//		}//方法一 , 不用于輸出中文
//方法二 ,讀數組read(char[])
		char[] buf=new char[42];
		int num=fr.read(buf);//将讀取到的字元串存儲到數組中
		System.out.println(num+"::"+new String(buf));
		
	}

}