java IO流之三 使用缓冲流来读写文件

原文:http://blog.csdn.net/haluoluo211/article/details/52183219

一、通过BufferedReader和BufferedWriter来读写文件

使用缓冲流的好处是,能够更高效的读写信息,原理是将数据先缓冲起来,然后一起写入或者读取出来。经常使用的是readLine()方法,表示一次读取一行数据。

package org.example.io;  

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;  

public class TestBufferedWriter {  

    public static void main(String[] args) throws Exception {
        write();
        read();
    }  

    /**
     * DOC 读取信息.
     *
     * @throws FileNotFoundException
     * @throws IOException
     */
    private static void read() throws FileNotFoundException, IOException {
        File file = new File("E:\\a.txt");// 指定要读取的文件
        // 获得该文件的缓冲输入流
        BufferedReader bufferedReader = new BufferedReader(new FileReader(file));
        String line = "";// 用来保存每次读取一行的内容
        while ((line = bufferedReader.readLine()) != null) {
            System.out.println(line);
        }
        bufferedReader.close();// 关闭输入流
    }  

    /**
     * DOC 写入信息.
     *
     * @throws IOException
     */
    private static void write() throws IOException {
        File file = new File("E:\\a.txt");// 指定要写入的文件
        if (!file.exists()) {// 如果文件不存在则创建
            file.createNewFile();
        }
        // 获取该文件的缓冲输出流
        BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(file));
        // 写入信息
        bufferedWriter.write("你好世界");
        bufferedWriter.newLine();// 表示换行
        bufferedWriter.write("hello world");
        bufferedWriter.flush();// 清空缓冲区
        bufferedWriter.close();// 关闭输出流
    }  

}  

二、使用BufferedInputStream和BufferedOuputStream读写图片

使用方式和FileInputStrem和FileOutputStream基本一致:

package org.example.io;  

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;  

public class TestBufferedString {  

    public static void main(String[] args) throws Exception {
        // 指定要读取文件的缓冲输入字节流
        BufferedInputStream in = new BufferedInputStream(new FileInputStream("F:\\test.jpg"));
        File file = new File("E:\\test.jpg");
        if (file != null) {
            file.createNewFile();
        }
        // 指定要写入文件的缓冲输出字节流
        BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(file));
        byte[] bb = new byte[1024];// 用来存储每次读取到的字节数组
        int n;// 每次读取到的字节数组的长度
        while ((n = in.read(bb)) != -1) {
            out.write(bb, 0, n);// 写入到输出流
        }
        out.close();// 关闭流
        in.close();
    }  

}  
时间: 2024-11-05 12:25:31

java IO流之三 使用缓冲流来读写文件的相关文章

Java I/O流操作(二)---缓冲流[转]

转自:http://blog.csdn.net/johnny901114/article/details/8710403 一.BufferWriter类 IO的缓冲区的存在就是为了提高效率,把要操作的数据放进缓冲区,然后一次性把缓冲区的内容写到目的地,而不是写一次就往目的地写一次. 在这里要注意的是当我们关闭了缓冲区对象实际也关闭了与缓冲区关联的流对象. BufferWriter类 try { FileWriter fw =new FileWriter("test.txt"); //使

Java.io.outputstream.PrintStream:打印流

Java.io.outputstream.PrintStream:打印流 1:提供了更多的功能,比如打印方法.可以直接打印任意类型的数据. 2:它有一个自动刷新机制,创建该对象,指定参数,对于指定方法可以自动刷新. 3:它使用的本机默认的字符编码. 4:该流的print方法不抛出IOException. 该对象的构造函数. PrintStream(File file)  :创建具有指定文件且不带自动行刷新的新打印流. PrintStream(File file, String csn) :创建具

文件流之字节缓冲流(BufferedInputStream BufferedOutputStream)

缓冲流的优势是: BufferedInputStream: 输入缓冲流:先从磁盘中将要读取的内容放入到内存中,再一次性从内存中取出来,避免了读一段取一段: BufferedOutputStream: 输出缓冲流:先将要输出的内容放入到内存中,再一次性全都输出. 缓冲流的构造函数: public BufferedInputStream(InputStream in) { this (in, DEFAULT_BUFFER_SIZE); } public BufferedInputStream(Inp

java io 学习之三 字符流的缓冲区

 /** 字符流的缓冲区 缓冲区的出现,提高了对数据的读写效率 对应的类: BufferedWriter BufferedReader 缓冲区要结合流才可以使用 缓冲区是在流的基础上对流的功能进行增强 软件的优化可以分为:设计优化和性能优化 设计优化:对代码进行重构,让代码实现更强的可扩展性和灵活性,复用性. 提高性能最常用的的手段是:缓冲区  线程池 BufferedWriter 构造方法摘要 BufferedWriter(Writer out) 创建一个使用默认大小输出缓冲区的缓冲字符输

Java学习总结(7)——(File类,IO流,(缓冲流,转换流等),Properties类)

一.File类 java.io.File类代表系统文件(文件和目录) 访问文件属性步骤 (1)创建文件对象 格式:File file=new File(String pathname); (2)调用方法:操作文件目录的属性(路径,权限,日期和时间等) File类的属性(separator默认名称分隔符) (1)在UNIX系统上,此字段的值为 '/ ';在window系统上,它为'\' (2)为了程序的跨平台性,文件的路径应该用这个属性值来代表 File类的常用方法 方法名称 说明 Boolean

Java IO流之字符缓冲流

字符流: 1.加入字符缓存流,增强读取功能(readLine) 2.更高效的读取数据 BufferedReader 从字符输入流读取文本,缓冲各个字符,从而实现字符.数组和行的高效读取. FileReader:内部使用InputStreamReader,解码过程,byte->char,默认缓存大小为8k BufferReader:默认缓存大小为8k,但可以手动指定缓存大小,把数据读取到缓存中,减少每次转换过程,效率更高 //字符输入缓冲流 private static void charRead

java.IO输入输出流:过滤流:buffer流和data流

java.io使用了适配器模式装饰模式等设计模式来解决字符流的套接和输入输出问题. 字节流只能一次处理一个字节,为了更方便的操作数据,便加入了套接流. 问题引入:缓冲流为什么比普通的文件字节流效率高? 不带缓冲的操作,每读一个字节就要写入一个字节. 由于涉及磁盘的IO操作相比内存的操作要慢很多,所以不带缓冲的流效率很低. 带缓冲的流,可以一次读很多字节,但不向磁盘中写入,只是先放到内存里. 等凑够了缓冲区大小的时候一次性写入磁盘,这种方式可以减少磁盘操作次数,速度就会提高很多! 这就是两者的区别

Java IO(input output)流<二>

一.字符流的缓冲区 1.什么是缓冲区       缓冲区又称为缓存,它是内存空间的一部分.也就是说,在内存空间中预留了一定的存储空间,这些存储空间用来缓冲输入或输出的数据, 这部分预留的空间就叫做缓冲区.缓冲区根据其对应的是输入设备还是输出设备,分为输入缓冲区和输出缓冲区. 2.为什么要引入缓冲区 缓冲区就是一块内存区,它用在输入输出设备和CPU之间,用来缓存数据.它使得低速的输入输出设备和高速的CPU能够协调工作,避免低 速的输入输出设备占用CPU,解放出CPU,使其能够高效率工作. 3.字符

java IO之字节流和字符流-OutputSteam和InputStream

java中的IO流分为字节流和字符流:每种流又分输入流和输出流. 先来说一下输入流和输出流:输入输出是针对程序内存而言,那么输入就是向内存写入数据:输出就是从程序内存写出数据. 字节流使用过字节直接操作数据. 字符流则是通过字节写入到缓存,再通过缓存区操作数据. 字节流的父类为InputStream(输入流)和OutputStream(输出流). IntputStream的直接子类有:AudioInputStream,ByteArrayInputStream,FileInputStream,Fi