package Excr191;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.Iterator;
public class Demo2 {
/**
* 字符流读取流缓冲区
* 该缓冲区提供了一个异常读一行的方法,方便于对文本数据的获取
* 方法是readline
* 当返回null时,表示读到文件末尾
*
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
//创建一个读取流对象和文件相关联的
FileReader fileReader=new FileReader("D://1.txt");
//为了提高效率缴入缓冲技术,将字符读取流对象作为参数传递给缓冲对象的构造函数
BufferedReader bufferedReader=new BufferedReader(fileReader);
String lineString=null;
while ((lineString=bufferedReader.readLine())!=null) {
System.out.println(lineString);
}
String readString=bufferedReader.readLine();
System.out.println(readString);
bufferedReader.close();
}
}
package Excr191;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import javax.management.RuntimeErrorException;
public class Demo3 {
/**字符读取流缓冲区
* 该缓冲区提供了一个一次度一行的方法 readLine,方便于对文本数据的获取
* 当返回null是,表示读到文件末尾
*
* readLine方法返回的是时候只有返回回车符之前的数据内容,并不返回回车符
*
* readLIne方法返回的时候只返回回车符之前的内容
* 通过缓冲区复制一个。java文件
* readline方法的原理:
* 无论是读一行,获取读取多个字符。其实最终都是在硬盘上一个一个的读取。
* 所以最终使用的还是read方法读一个的方法
* @param args
* @throws IOException
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
BufferedReader bufferedReader=null;
BufferedWriter bufferedWriter=null;
try {
bufferedReader=new BufferedReader(new FileReader("D://1.txt"));
bufferedWriter=new BufferedWriter(new FileWriter("D://aa.txt"));
String line=null;
while ((line=bufferedReader.readLine())!=null) {
bufferedWriter.write(line);
bufferedWriter.flush();}
} catch (IOException e) {
// TODO Auto-generated catch block
throw new RuntimeErrorException(null, "读写失败");
}
finally
{
try {
if (bufferedReader!=null) {
bufferedReader.close();
}
} catch (Exception eqwertyuioplkjhgfdsazxcvbnm) {
// TODO: handle exception
}
}
}
}
package Excr191;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class Demo4 {
/**明白了BUfferedReader类中特有方法readLine的原理后
* 可以自定义一个类中包含一个功能hereadLine一致的方法
* 来模拟一下BufferedReader
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
FileReader fileReader=new FileReader("D:\\1.txt");
}
}
class MyBufferedReader{
//可以一次读一行的方法
private FileReader rFileReader;
MyBufferedReader(FileReader rFileReader)
{
this.rFileReader=rFileReader;
}
public String myreadLine() throws IOException
{
//定义一个临时容器,源BufferReader封装的是字符数组
//为了演示方便,定义了一个StringBuilder容器,因为最终还是要将数据变成字符串
StringBuilder stringBuilder=new StringBuilder();
int ch=0;
while((ch=rFileReader.read())!=-1)
{
if (ch==‘\r‘)
continue;
if(ch==‘\n‘)
return stringBuilder.toString();
else {
stringBuilder.append((char)ch);
}
}
return null;
}
}