java中缓冲流的使用

Java中缓冲流的使用

一、缓冲字节输出流类

功能:带缓冲区的将字节数据从内存写入硬盘文件的类
使用步骤:
1、创建一个字节输出流对象(例如:FileOutputStream类),构造方法中传递存储数据的文件或者文件路径。
2、创建一个缓冲字节输出流对象,构造方法中传递字节输出流对象。
3、调用缓冲字节输出流的write方法写入数据。
4、调用缓冲字节输出流的close方法释放资源。

1.1 构造方法

功能:创建一个缓冲字节输出流对象。
用法:BufferedOutputStream 对象名 = new BufferedOutputStream(字节输出流对象)
示例:BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(“src\buffered\a.txt”));
注意事项:构造方法存在FileNotFoundException异常,需要throws或者try catch。

1.2 常用方法

1.2.1、write()
功能:从内存中向硬盘里写入数据。
用法:BufferedOutputStream对象.write(需要写入的数据)。
write(int b):写入一个字节的数据。
write(byte[] b):用于一次写入多个字节的数据,即将指定的字节数组写入文件。注意:如果写的第一个字节是正数并且在0-127
之间,则显示的时候会查询ASCII表。如果写的第一个字节是负数,那么第一个字节和第二个字节会合并为一个中文字节显示,
查询的编码表为系统默认的GBK编码表,显示中文字符要求两个连续的字节都为负数,否则会出现乱码。
write(byte[] b, int off, int len):用于一次写入多个字节的数据,即将指定字节数组从off位置开始len长度的数据写入指定文件。
实例:bos1.write(100);
注意事项:
1、write()方法存在IOException异常,因此使用时需要throws或者try catch。
2、write()方法是按照字节写入数据,编码遵照使用的的编码表,例如:使用的是UTF-8编码,写入的是整数“90”,在文件中
显示的是“Z”。
3、如果不知道字符用字节表示为多少,可以先写为字符串,然后调用字符串类的getBytes()方法转换为字节数组,最后调用
write()方法写入数据。
4、如果文件中的数据需要换行,则需要使用换行符,在Windows系统中为:\r\n,在linux系统中为:/n,mac系统中为:/r。
1.2.2、close()
功能:释放BufferedOutputStream对象的资源。
用法:BufferedOutputStream对象.close()。
实例:bos1.close();
注意事项:close()方法存在IOException异常,因此使用时需要throws或者try catch。
缓冲字节输出流类使用实例:

package buffered;

import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;

/**
 * 缓冲字节输出流的使用
 */
public class BufferedOutputStream01 {
    public static void main(String[] args) throws IOException {
        //创建BufferedOutputStream对象
        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("src\\buffered\\a.txt",true));
        //调用write方法写入数据
        bos.write("hello world 你好".getBytes());
        //调用close方法释放资源
        bos.close();
    }
}

二、缓冲字节输入流类

功能:带缓冲区的字节输入流类,用于从硬盘指定文件中读取数据到内存中。
使用步骤:
1、创建字节输入流对象,构造方法中传递读取的文件或者文件路径。
2、创建缓冲字节输入流对象,构造方法中传递字节输入流对象。
3、调用缓冲字节输入流对象的read方法读取数据。
4、调用缓冲字节输入流对象的close方法释放资源。

2.1 构造方法

功能:创建一个缓冲字节输入流对象。
用法:BufferedInputStream 对象名 = new BufferedInputStream(字节输入流对象)。
示例:BufferedInputStream bis = new BufferedInputStream(new FileInputStream(“src\buffered\a.txt”));
注意事项:构造方法存在FileNotFoundException异常,需要throws或者try catch。

2.2 常用方法

2.2.1 read()方法
功能:从BufferedInputStream对象指定的文件中读取数据。
用法:int len = BufferedInputStream对象.read();
int len = 对象.read():每次读取一个字节数据的并作为int类型数据返回的方法。
int len = 对象.read(byte[] b):每次读取数据并且缓存到byte数组中的方法,len表示读取到的数据的长度。
注意事项:read()方法存在IOException异常,因此使用时需要throws或者try catch。
2.2.2、close()
功能:释放BufferedInputStream对象的资源。
用法:BufferedInputStream对象.close()。
实例:bis.close();
注意事项:close()方法存在IOException异常,因此使用时需要throws或者try catch。
缓冲字节输入流使用实例:

package buffered;

import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.IOException;

/**\
 * 缓冲字节输入流的使用
 */
public class BufferedInputStream01 {
    public static void main(String[] args) throws IOException {
        //创建缓冲字节流对象
        BufferedInputStream bis = new BufferedInputStream(new FileInputStream("src\\buffered\\a.txt"));
        //创建byte数据存储缓冲的数据
        byte[] bytes = new byte[64];
        //调用缓冲字节输入流对象的read方法读取数据
        int len = 0;
        while ((len = bis.read(bytes)) != -1){
            System.out.print(new String(bytes, 0, len));
        }
        //调用缓冲字节输入流对象的close方法释放资源
        bis.close();
    }
}

三、缓冲字符输出流类

功能:带缓冲区的字符输出流类,用于从内存中向硬盘中写入数据。
使用步骤:
1、创建字符输出流对象,构造方法中传递写入的文件或者文件路径。
2、创建缓冲字符输出流对象,构造方法中传递字符输出流对象。
3、调用write方法写入数据。
4、调用close方法释放资源。

3.1 构造方法

功能:创建缓冲字符输出流对象。
用法:BufferedWriter 对象名 = new BufferedWriter(字符输出流对象)
示例:BufferedWriter bw = new BufferedWriter(new FileWriter(“src\buffered\b.txt”));
注意事项:构造方法存在FileNotFoundException异常,需要throws或者try catch。

3.2 常用方法

3.2.1 write()方法
功能:向硬盘指定文件写入数据。
write(int c):向文件中写入单个字符。
参数:int c 字节形式的字符,例如’a’ = 97。
用法:对象.write(整数)。
示例:bw.write(97)。
write(char c):向文件中写入单个字符。
参数:char c 单个字符,例如’a’
用法:对象.write(单个字符)。
示例:bw.write(‘a’)。
write(char[] c):向文件中写入字符数组。
参数:char[] c 字符数组,例如:{‘a’, ‘b’, ‘c’, ‘d’}。
用法:对象.write(字符数组)。
示例:char[] c = {‘a’, ‘b’, ‘c’, ‘d’};
bw.writer©;
write(String s):向文件中写入字符串。
参数:String s 字符串,例如:“你好”
用法:对象.write(字符串)。
示例:bw.write(“你好”);
注意事项:
1、write方法写入数据只是在内存中完成了字符到字节的转换,还没有真正将数据写入文件。
2、然后需要数据换行则使用"\r\n"。
3、一个对象可以多次使用write方法,但调用close方法后则不能使用了。
4、write方法存在IOException,使用时需要throws或者try catch
3.2.2 flush()方法
功能:将内存中的数据刷新到文件中。
用法:对象.flush()。
示例:bw.flush();
注意事项:
1、一个对象可以多次使用flush方法,但调用close方法后则不能使用了。
2、flush方法存在IOException,使用时需要throws或者try catch。
3.2.3 close()方法
功能:关闭字符流,释放资源。
用法:对象.close()。
示例:bw.close();
注意事项:
1、对象调用close方法后write、flush方法则不能再使用了。
2、close方法存在IOException异常,使用时需要throws或者try catch。
3.2.4 newLine()方法
功能:向文件中写入换行符,使得文件换行。
用法:对象.newLine()。
示例:bw.newLine();
缓冲字符输出流使用实例:

package buffered;

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;

/**
 * 缓冲字符输出流的使用
 */
public class BufferedWriter01 {
    public static void main(String[] args) throws IOException {
        //创建缓冲字符输出流对象
        BufferedWriter bw = new BufferedWriter(new FileWriter("src\\buffered\\b.txt"));
        for (int i = 0; i < 10; i++){
            //调用write方法写入数据
            bw.write("你好");
            //调用newLine方法换行
            bw.newLine();
        }
        //调用close释放资源
        bw.close();
    }
}

四、缓冲字符输入流类

功能:带缓冲区的字符输入流类,用于从硬盘指定文件中读取数据到内存中。
使用步骤:
1、创建字符输入流类,构造方法中传递读取的文件或者文件路径。
2、创建缓冲字符输入流类,构造方法中传递字符输入流对象。
3、调用read方法或者readLine()方法读取数据
4、调用close方法释放资源

4.1 构造方法

功能:创建缓冲字符输入流对象。
用法:BufferedReader 对象名 = new BufferedReader(字符输入流对象)
示例:BufferedReader br1 = new BufferedReader(new FileReader(“src\buffered\b.txt”));

4.2 常用方法

4.2.1 read()方法
功能:根据参数的不同,每次读取一个或者多个字符的数据。
用法:
1、int len = 对象.read():每次读取一个字符,并作为int类型数据返回,len为返回的数据,当读取完成后返回-1。
2、int len = 对象.read(char[] c):每次读取字符数组长度的数据,并缓存到字符数组中,len为缓存到字符数组中数据的长度,当
读取完成后返回-1。
注意事项:
1、read()方法使用时会报IOException异常,因此需要throws或者try catch。
4.2.2 close()方法
功能:关闭字符流,释放内存。
用法:对象.close()。
实例:br.close()
注意事项:
1、close()方法使用时会报IOException异常,因此需要throws或者try catch。
4.2.3 readLine()
功能:读取文件中一行数据,即遇到换行符结束读取。
用法:对象.readLine()
实例:br.readLine()。
缓冲字符输入流使用实例:

package buffered;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

/**
 * 缓冲字符输入流的使用
 */
public class BufferedReader01 {
    public static void main(String[] args) throws IOException {
        //创建缓冲字符输入流对象
        BufferedReader br1 = new BufferedReader(new FileReader("src\\buffered\\b.txt"));
        //调用read()方法读取数据
        char[] c = new char[64];
        int len = 0;
        while ((len = br1.read(c)) != -1){
            System.out.print(new String(c));
        }
        //调用close释放资源
        br1.close();
        System.out.println();

        //创建缓冲字符输入流对象
        BufferedReader br2 = new BufferedReader(new FileReader("src\\buffered\\b.txt"));
        //调用readLine()方法读取数据
        String s = "";
        while ((s = br2.readLine()) != null){
            System.out.println(s);
        }
        //调用close释放资源
        br2.close();
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值