1.缓冲流介绍
1) 缓冲流要“套接”在相应的节点上,对读写的数据提供了缓冲的功能,提高读写的效率,同时增加了一些新的方法。
2) J2SDK提供了四种缓存流,其常用的构造方法为:
- BufferedReader(Reader in)
- BufferedReader(Reader in, int sz) //sz为自定义缓存区的大小
- BufferedWriter(Writer out)
- BufferedWriter(Writer out, int sz)
- BufferedInputStream(InputStream in)
- BufferedInputStream(InputStream in, int size)
- BufferedOutputStream(OutputStream out)
- BufferedOutputStream(OutputStream out, int size)
BufferedReader(Reader in)
BufferedReader(Reader in, int sz) //sz为自定义缓存区的大小
BufferedWriter(Writer out)
BufferedWriter(Writer out, int sz)
BufferedInputStream(InputStream in)
BufferedInputStream(InputStream in, int size)
BufferedOutputStream(OutputStream out)
BufferedOutputStream(OutputStream out, int size)
3) 缓冲输入流支持父类的mark和reset方法。
4) BufferedReader提供了readLine方法用于读取一行字符串(以\r或\n分隔)。
5) BufferedWriter提供newLine用于写入一个行分隔符。
6) 对于输出的缓冲流,写出的数据会先在内存中缓存,使用flush方法会将内存中的数据立刻写出。
2. 缓冲流例子一
- package com.owen.io;
- import java.io.BufferedInputStream;
- import java.io.FileInputStream;
- import java.io.IOException;
- /**
- * 使用BufferedInputStream的缓冲流,处理读取字节流
- *
- * @author OwenWilliam 2016-7-19
- * @since
- * @version v1.0.0
- *
- */
- public class TestBufferStream1
- {
- public static void main(String[] args)
- {
- try
- {
- FileInputStream fis = new FileInputStream(
- "E:/workspace/Java/IO/src/com/owen/io/TestFileWriter.java");
- BufferedInputStream bis = new BufferedInputStream(fis);
- int c = 0;
- System.out.println(fis.read());
- System.out.println(bis.read());
- // 从第100个字符读起
- bis.mark(100);
- for (int i = 0; i <= 10 && (c = bis.read()) != -1; i++)
- {
- System.out.print((char) c + " ");
- }
- System.out.println();
- // 重置回到第100个字符的位置
- bis.reset();
- for (int i = 0; i <= 10 && (c = bis.read()) != -1; i++)
- {
- System.out.print((char) c + " ");
- }
- bis.close();
- } catch (IOException e)
- {
- e.printStackTrace();
- }
- }
- }
package com.owen.io;
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.IOException;
/**
* 使用BufferedInputStream的缓冲流,处理读取字节流
*
* @author OwenWilliam 2016-7-19
* @since
* @version v1.0.0
*
*/
public class TestBufferStream1
{
public static void main(String[] args)
{
try
{
FileInputStream fis = new FileInputStream(
"E:/workspace/Java/IO/src/com/owen/io/TestFileWriter.java");
BufferedInputStream bis = new BufferedInputStream(fis);
int c = 0;
System.out.println(fis.read());
System.out.println(bis.read());
// 从第100个字符读起
bis.mark(100);
for (int i = 0; i <= 10 && (c = bis.read()) != -1; i++)
{
System.out.print((char) c + " ");
}
System.out.println();
// 重置回到第100个字符的位置
bis.reset();
for (int i = 0; i <= 10 && (c = bis.read()) != -1; i++)
{
System.out.print((char) c + " ");
}
bis.close();
} catch (IOException e)
{
e.printStackTrace();
}
}
}
3.缓冲流例子二
- package com.owen.io;
- import java.io.BufferedReader;
- import java.io.BufferedWriter;
- import java.io.FileReader;
- import java.io.FileWriter;
- import java.io.IOException;
- /**
- * 使用BufferedWriter和BufferedReader实现写入与写出
- *
- * @author OwenWilliam 2016-7-19
- * @since
- * @version v1.0.0
- *
- */
- public class TestBufferStream2
- {
- public static void main(String[] args)
- {
- try
- {
- // 写入文件
- BufferedWriter bw = new BufferedWriter(new FileWriter(
- "E:/workspace/Java/IO/src/com/owen/io/data2.txt"));
- // 读取文件
- BufferedReader br = new BufferedReader(new FileReader(
- "E:/workspace/Java/IO/src/com/owen/io/data2.txt"));
- String s = null;
- for (int i = 1; i <= 100; i++)
- {
- s = String.valueOf(Math.random());
- bw.write(s);
- // 写入一行分隔符
- bw.newLine();
- }
- // 缓存中数据 立刻写出
- bw.flush();
- // 一行一行写出
- while ((s = br.readLine()) != null)
- {
- System.out.println(s);
- }
- bw.close();
- br.close();
- } catch (IOException e)
- {
- e.printStackTrace();
- }
- }
- }
package com.owen.io;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
/**
* 使用BufferedWriter和BufferedReader实现写入与写出
*
* @author OwenWilliam 2016-7-19
* @since
* @version v1.0.0
*
*/
public class TestBufferStream2
{
public static void main(String[] args)
{
try
{
// 写入文件
BufferedWriter bw = new BufferedWriter(new FileWriter(
"E:/workspace/Java/IO/src/com/owen/io/data2.txt"));
// 读取文件
BufferedReader br = new BufferedReader(new FileReader(
"E:/workspace/Java/IO/src/com/owen/io/data2.txt"));
String s = null;
for (int i = 1; i <= 100; i++)
{
s = String.valueOf(Math.random());
bw.write(s);
// 写入一行分隔符
bw.newLine();
}
// 缓存中数据 立刻写出
bw.flush();
// 一行一行写出
while ((s = br.readLine()) != null)
{
System.out.println(s);
}
bw.close();
br.close();
} catch (IOException e)
{
e.printStackTrace();
}
}
}