java的io缓冲流_java学习笔记(9)——IO系统 缓冲流

bf260b01f8b8e7bd3f3c0d4c1b7ecd56.png

字节缓冲流

字节缓冲输出流

java.io.BufferedOutputStream extends OutputStream

65f8745f09f51a2e2cbe5fec37da0e4b.png

构造方法:BufferedOutputStream(OutputStream out):创建一个新的缓冲输出流,将数据写入指定的底层输出流

BufferedOutputStream(OutputStream out, int size):

参数:

OutputStream out:字节输出流

可传递FileOutputStream,缓冲流给FileOutputStream增加一个缓冲区,提高其写入效率

int size:指定缓冲流内部缓冲区大小

使用步骤(!!!)创建FileOutputStream对象,构造方法中绑定输出目的地

创建BufferedOutputStream对象,构造方法中传递FileOutputStream对象,提高FileOutputStream对象效率

使用BufferedOutputStream对象中write方法,将数据写入到内部缓冲区

使用BufferedOutputStream对象中flush方法,把内部缓冲区的数据,刷新到文件中

释放资源(先调用flush,再close)public static void main(String[] args) throws IOException {

FileOutputStream fos = new FileOutputStream("E:\\A JI\\program\\java\\g.txt");

BufferedOutputStream bos = new BufferedOutputStream(fos);

bos.write("把数据写入缓冲区".getBytes());

bos.flush();

bos.close();

}

字节缓冲输入流

java.io.BufferedIntputStream extends InputStream

38806b5a2cf76fbc2385dbca9feb5ed5.png

构造方法:BufferedInputStream(InputStream in):创建一个新的缓冲输入流,将数据写入指定的底层输出流

BufferedInputStream(InputStream in, int size):

参数:

InputStream in:字节输出流

可传递FileInputStream,缓冲流给FileInputStream增加一个缓冲区,提高其读取效率

int size:指定缓冲流内部缓冲区大小

使用步骤(!!!)创建FileInputStream对象,构造方法中绑定要读取的数据源

创建BufferedInputStream对象,构造方法中传递FileInputStream对象,提高FileInputStream对象读取效率

使用BufferedInputStream对象中read方法,读取文件

释放资源public static void main(String[] args) throws IOException {

FileInputStream fis = new FileInputStream("E:\\A JI\\program\\java\\g.txt");

BufferedInputStream bis = new BufferedInputStream(fis);

byte[] bytes = new byte[1024];

int len = 0;

while((len = bis.read(bytes)) != -1) {

System.out.println(new String(bytes, 0, len));

}

bis.close();

}

字符缓冲流

字符缓冲输出流

java.io.BufferedWriter extends Writer

40894ec0441691d054ac1569a6e632e0.png

构造方法:BufferedWriter(Writer out):创建一个新的缓冲字符输出流

BufferedWriter(Writer out, int size):

参数:

Writer out:字符输出流

可传递FileWriter,缓冲流给FileWriter增加一个缓冲区,提高其写入效率

int size:指定缓冲流内部缓冲区大小

特有成员方法:

void newLine():写入一个行分隔符,会自动根据不同的操作系统,获取不同的航分隔符

使用步骤(!!!)创建字符缓冲输出流对象,构造方法中传递字符输出流

使用BufferedWriter对象中write方法,将数据写入到内部缓冲区

使用BufferedWriter对象中flush方法,把内部缓冲区的数据,刷新到文件中

释放资源public static void main(String[] args) throws IOException {

BufferedWriter bw = new BufferedWriter(new FileWriter("E:\\A JI\\program\\java\\g.txt"));

for (int i = 0; i < 10; i++) {

bw.write("123");

bw.newLine();

}

bw.flush();

bw.close();

}

字符缓冲输入流

java.io.BufferedReader extends Reader

3608ff7ea3f2f08ec0b26df67c4e9a16.png

构造方法:BufferedReader(Reader in):创建一个新的缓冲字符输入流

BufferedReader(Reader in, int size):

参数:

Reader in:字节输出流

可传递FileReader,缓冲流给FileReader增加一个缓冲区,提高其读取效率

int size:指定缓冲流内部缓冲区大小

特有的成员方法:

String readLine():读取数据的 行 终止符号返回值:

包括该行内容的字符串,不包含任何**行终止符**,若到达流末尾,**则返回null**(while条件此处有变化)

使用步骤(!!!)创建FileReader对象,构造方法中绑定要读取的数据源

创建BufferedReader对象,构造方法中传递FileReader对象,提高FileReader对象读取效率

使用BufferedReader对象中read/readLine方法,读取文件

释放资源public static void main(String[] args) throws IOException {

BufferedReader br = new BufferedReader(new FileReader("E:\\A JI\\program\\java\\g.txt"));

String line;

while((line = br.readLine()) != null) {

System.out.println(line);

}

}

案例

文本排序!!!!

5781ff23bb75a99ca4eac452e15dbade.pngpublic static void main(String[] args) throws IOException {

HashMap map = new HashMap<>();

BufferedReader br = new BufferedReader(new FileReader("E:\\A JI\\program\\java\\g.txt"));

BufferedWriter bw = new BufferedWriter(new FileWriter("E:\\A JI\\program\\java\\out.txt"));

//使用readLine,逐行读取文本

String line;

while((line = br.readLine()) != null) {

//对文本进行切割,可以根据 . 来切割

// . 是一个转义字符,需要两个\表示一个普通的 .

String[] arr = line.split("\\.");

//将切割好的序号和文本内容存储到HashMap中,key序号有序,会自动排序

map.put(arr[0], arr[1]);

}

//遍历HashMap,获取每一个键值对

for (String key : map.keySet()) {

String value = map.get(key);

//把每一个键值对,拼接成一个文本行

line = key + "." + value;

//将拼接好的文本,写入文件

bw.write(line);

bw.newLine(); //写一个换行

}

bw.flush();

bw.close();

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值