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