---------------------- android培训、java培训、期待与您交流! ----------------------
黑马程序员-IO流使用缓冲区提高效率
/*
字符流缓冲区
缓冲区的出现提高了流对数据的读写效率。
对应类:
1.BufferedWriter
2.BufferedReader
用法:缓冲区要结合流才能使用,是在流的基础上对流进行增强。
缓冲区的出现是为了提高流的操作效率,所以创建缓冲区前,要现有流的存在。
示例:
*/
import java.io.*;
class BuffTest
{
public static void main(String[] args)
{
buffWrite();
buffRead();
buffCopy();
}
public static void buffWrite()
{
BufferedWriter bufw=null;
try
{
//创建字符写入流缓冲区对象。将需要被提高效率的流对象作为参数传递给缓冲区的构造函数。
bufw=new BufferedWriter(new FileWriter("D://1.txt"));
//使用Writer类中的writer方法写入数据。
bufw.write("abcdefg");
//只要用到流就要记得刷新。
bufw.flush();
//newLine方法是BufferedWriter特有的方法,写如一个行分隔符,即换行标记。可以实现多平台。
bufw.newLine();
bufw.write("1234");
bufw.flush();
}
catch(IOException e)
{
throw new RuntimeException("写入失败");
}
finally
{
if(bufw !=null)
try
{
bufw.close();
}
catch(IOException e)
{
throw new RuntimeException("关闭失败");
}
}
}
public static void buffRead()
{
BufferedReader bufr=null;
try
{
//创建字符读取流缓冲区对象。将需要被提高效率的流对象作为参数传递给缓冲区的构造函数。
bufr=new BufferedReader(new FileReader("D://1.txt"));
//定义一个字符串用于存放文本数据。
String line=null;
//读取时使用readLine方法,该方法是BufferedReader的特有方法,用于读取以个文本行,不包含任何行终止符。
while((line=bufr.readLine()) !=null)
{
System.out.println(line);
}
}
catch(IOException e)
{
throw new RuntimeException("读取失败");
}
finally
{
if(bufr !=null)
try
{
bufr.close();
}
catch(IOException e)
{
throw new RuntimeException("关闭失败");
}
}
}
public static void buffCopy()
{
BufferedReader bufr=null;
BufferedWriter bufw=null;
try
{
//创建字符读取流缓冲区对象。将需要被提高效率的流对象作为参数传递给缓冲区的构造函数。
//创建字符写入流缓冲区对象。将需要被提高效率的流对象作为参数传递给缓冲区的构造函数。
bufr=new BufferedReader(new FileReader("D://1.txt"));
bufw=new BufferedWriter(new FileWriter("D://2.txt"));
String line=null;
//使用readLine方法从文本中获取数据。
while((line=bufr.readLine()) !=null)
{
//使用Writer类中的writer方法写入数据。
bufw.write(line);
//因为readLine不读取行终止符,所以在获取一行后写入新文件的时候可以加上newLing换行。
bufw.newLine();
bufw.flush();
}
}
catch(IOException e)
{
throw new RuntimeException("复制失败");
}
finally
{
if(bufr !=null)
try
{
bufr.close();
}
catch(IOException e)
{
throw new RuntimeException("关闭失败");
}
if(bufw !=null)
try
{
bufw.close();
}
catch(IOException e)
{
throw new RuntimeException("关闭失败");
}
}
}
}
/*
BUfferedWriter和BufferedReader中的特殊方法:
newLine():写入一个行分隔符。行分隔符字符串由系统属性 line.separator 定义,并且不一定是单个新行 ('\n') 符。
readLine():读取一个文本行。通过下列字符之一即可认为某行已终止:换行 ('\n')、回车 ('\r') 或回车后直接跟着换行。
返回:包含该行内容的字符串,不包含任何行终止符,如果已到达流末尾,则返回 null
*/
---------------------- android培训、java培训、期待与您交流! ----------------------