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));
}
}