IO高级流 首字符 丢失 的问题

在读取文件的时候需要先判断是否到达文件的结尾

当使用高级缓冲字符流(BufferedReaderbr.read()方法根据返回的整数来判断是否到达文件末尾,如果返回的是-1,则表示到达文件末尾,使用此种方法虽然可以判断是否能读取到内容,但可能会把第一个字母给读出,当再次使用readLine()读取的内容的时候,就可能会丢失第一个字符。

解决此问题可以使用br.readline() != null来判断是否到达文件末尾。

如下代码(我这里是分割文件的例子)

try {

    InputStream is = new FileInputStream("D:/20140324.sql");

    OutputStream os = null;

    PrintWriter pw = null;

    BufferedReader br = new BufferedReader(new InputStreamReader(is));

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

        os = new FileOutputStream("D:/tep" + i + ".sql");

        pw = new PrintWriter(os);

        for (int j = 0; j < 50; j++) {

            if (br.readLine() != null ) {

                String str = br.readLine();

                pw.println(str);

                pw.flush();

            }

        }

        os.close();

    }

} catch (FileNotFoundException e) {

    e.printStackTrace();

} catch (IOException e) {

    e.printStackTrace();

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值