IO字符流之读写缓冲区(BufferedWriter、BufferedReader)

缓冲区是为了提高效率所使用的,在使用缓冲区之前必须先明确流对象。就如同拿杯子接水一样,必须先知道这个杯子放在哪里接水

BufferedWriterDemo(输入字符流缓冲区演示):

import java.io.*;
/*
缓冲区的出现是为了提高流的操作效率而出现的。

所以在创建缓冲区之前,必须要先有流对象。

该缓冲区对象中提供了一个跨平台的换行符。
newLine();

*/
class BufferedWriterDemo
{
    public static void main(String[] args)
    {
        //定义一个流对象。
        FileWriter fw = null;
        //为了提高字符写入流效率。加入了缓冲技术。
        BufferedWriter bufw = null;
        try
        {
            fw = new FileWriter("E:\\BufferedWriterDemo.txt");
            bufw = new BufferedWriter(fw);//只要将需要被提高效率的流对象作为参数传递给缓冲区的构造函数即可。
            bufw.write("fsafsfasfd");
        }
        catch (IOException e)
        {
            System.out.println(e.toString());
        }
        finally
        {
            try
            {
                if (fw!=null)
                {
                    bufw.close();
                }
            }
            catch (IOException e)
            {
            }
        }
    }
}

BufferWriterDemo

BufferedReaderDemo(读取字符流缓冲区演示):

/*
字符读取流缓冲区:
该缓冲区提供了一个一次读一行的方法 readLine,方便于对文本数据的获取。
当返回null时,表示读到文件末尾。

readLine方法返回的时候只返回回车符之前的数据内容。并不返回回车符。
*/

import java.io.*;
class BufferedReaderDemo
{
    public static void main(String[] args)
    {
        //先创建字符读取流对象
        FileReader fr = null;
        //字符读取流对象缓冲区。
        BufferedReader bufr = null;

        try
        {
            fr = new FileReader("E:\\BufferedWriterDemo.txt");
            bufr = new BufferedReader(fr);//为了提高效率。加入缓冲技术。将字符读取流对象作为参数传递给缓冲对象的构造函数。
            String result = null;
            while ((result=bufr.readLine())!=null)
            {
                System.out.println(result);
            }
        }
        catch (IOException e)
        {
            System.out.println(e.toString());
        }
        finally
        {
            try
            {
                if (fr!=null)
                {
                    bufr.close();//读取字符流缓冲对象可直接关闭资源,因其继承流了对象Reader的关闭资源方法
                }
            }
            catch (IOException e)
            {
            }

        }
    }
}

BufferedReaderDemo

使用缓存器复制文件演示:

import java.io.*;
class userBufferedCopyFileDemo
{
    public static void main(String[] args)
    {
        //创建读取和写入文件字符流对象
        FileReader fr = null;
        FileWriter fw = null;
        //创建读写字符流对象的缓冲区
        BufferedReader bufr = null;
        BufferedWriter bufw = null;
        //定义字符数组与计数器用于保存读取的数据信息
//        char [] array = new char[1024];
//        int len = 0;

        try
        {
            fr = new FileReader("E:\\BufferedWriterDemo.txt");
            fw = new FileWriter("E:\\userBufferCopyFileDemo.txt");
            bufr = new BufferedReader(fr);
            bufw = new BufferedWriter(fw);
            //读取进数组的方式
//            while ((len=bufr.read(array))!=-1)
//            {
//                bufw.write(array,0,len);
//            }
            //一行一行读取
            String line = null;
            while((line=bufr.readLine())!=null)
            {
                bufw.write(line);
                bufw.newLine();//输出一个换行符。
                bufw.flush();//为避免例如停电等情况每写完一行就将流刷新一次。

            }
        }
        catch (IOException e)
        {
            System.out.println(e.toString());
        }
        finally
        {
            try
            {
                if (fr!=null)
                {
                    bufr.close();
                }
            }
            catch (IOException e)
            {
            }
            try
            {
                if (fw!=null)
                {
                    bufw.close();
                }
            }
            catch (IOException e)
            {
            }
        }
    }
}

userBufferedCopyFileDemo

时间: 2024-10-24 11:38:15

IO字符流之读写缓冲区(BufferedWriter、BufferedReader)的相关文章

JAVA 字节流和字符流度读写的区别

java处理文件的类里面,stream结尾都是采用字节流,reader和writer结尾都是采用字符流.两者的区别就是读写的时候一个是按字节读写,一个是按字符. 字符流的底层就是字节流.而字符流主要是读取文本文件内容的,可以一个字符一个字符的读取,也可以一行一行的读取文本文件内容.而字节流读取单位为byte.byte作为计算机存储最基本单位,可以用字节流来读取很多其他格式的文件,比如图片视频等等.基于B/S和C/S的文件传输都可以采用字节流的形式.在读写文件需要对内容按行处理,比如比较特定字符,

字节流和字符流的读写

        // FileOutputStream 文件字节流输出 public void FileOutputStreamTest1() throws IOException { // 1.使用File找到一个文件 File file = new File("f:" + File.separator + "cnn.txt"); // 2.通过子类实例化父类对象 OutputStream out = null; out = new FileOutputStrea

java io 处理流,BufferdInputStream、BufferedWriter、BufferedReader

BufferdInputStream:读取helloworld.java helloworld.java: package io; public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World"); } } package io; import java.io.BufferedInputStream; import java.io.FileInputS

Java: IO 字符流

FileInputStream和FileOutputStream分别是InputStream和OutputStream的子类,都是字节流.下面例子中有三个方法可以读写字节流: 1.一个一个的 2.一组一组的,可以自定义字节数组的长度 3.使用available方法,可以返回目标文件的长度从而利用该特性建立一个刚刚好长度的字节数组.但该方法有使用风险,例如目标文件过大,一个电影或者一个大数据文件,则会导致超过虚拟机内存的大小,从而出现错误.所以使用该方法要评估风险,如果可以确定目标是小文件,则可以

IO(字符流)

    1. 由于Java采用16位的Unicode字符,因此需要基于字符的输入/输出操作.从Java1.1版开始,加入了专门处理字符流的抽象类Reader和Writer,前者用于处理输入, 后者用于处理输出. 2. Java程序语言使用Unicode来表示字符串和字符,Unicode使用两个字节来表示一个字符,即一个字符占16位 3. 字节流的编码规范与具体的平台有关,可以在构造流对象时指定规范,也可以使用当前平台的缺省规范 InputStreamReader和OutputStreamWrit

java - io字符流

1.字符流是什么 字符流是可以直接读写字符的io流 字符流读取字符,就是要先读取到字节数据,然后转为字符,如果要写出字符,需要把字符转为字节再写出 2.FileReader FileReader类的read(),可以按照字符大小读数 读取的是单个字符,返回的是int 读取字符,如果已到达流的末尾,则返回-1 3.FileWrite 写出字符 拷贝: 什么时候使用字符流: 字符流也可以拷贝文本文件,但不推荐使用,因为读取时会把字节转为字符,写出时还要把字符转回字节 程序需要读取一段文本,或者需要写

Java IO字符流与字节流

一.基本概念 流:从一端流向另一端,从源头到目的地. 始终与程序为中心,都是程序与文件|数组|网络连接|数据库进行操作. 二.IO流分类 1.流向: 输入流和输出流 2.数据: 字节流:二进制,可以处理文本文件,视频,音频等 . 字符流:文本文件,只能处理纯文本,全款为可见字符(.txt..html). 3.功能: 节点:包裹源头 处理:增强功能,提高性能. 三.字节流与字符流 1.字节流 输入流:InputStream int read(byte[] b) int read(byte[] b,

java之IO字符流

1.转换流的引入 在项目中新建了一个a.txt的文件,内容是 hello中国.我现在用字节输入流来读取并输出到控制台.当然复制文件是没有问题的啦.编码是utf-8. package cn; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; public class FileInputStreamDemo1 { public static void main(String[

java学习之IO字符流

1 package com.io; 2 3 import java.io.*; 4 /** 5 * 文件字符流的读取 6 * @author ganhang 7 * 8 */ 9 public class FileReaderDemo { 10 public static void read(){ 11 File file =new File("1.txt"); 12 try { 13 FileReader fr=new FileReader(file); 14 StringBuffe