JAVA IO(三)

来源:互联网 发布:mac 加速器 编辑:程序博客网 时间:2024/05/01 06:11

java中IO分类
按照数据流向分:输入流—————-输出流
按照数据单位:字节流——————字符流
按照是否直接和数据源相连:节点流———处理流

一,字节流转换成字符流(转换流)

用InputStreamReader 输入字节流转换成输入字符流

FileInputStream fis = new FileInputStream("aaa.txt");Reader reader=new BufferedReader(fis);

用OutputStreamWriter输出字节流转换成输出字符流

FileOutputStream fos=new FileOutputStream("bbb.txt");Writer writer=new OutputStreamWriter(fos);
public class TestChangStream {    //输入  字节流--->字符流    public Reader inputStreamToReader(InputStream is){        Reader reader = null;        reader  = new InputStreamReader(is);        return reader;    }    //输出 字节流--->字符流    public Writer outputStreamToWriter(OutputStream os){        Writer writer = null;        writer  = new OutputStreamWriter(os);        return writer;    }}

2.按行读写
按字节(取一滴) —– 按字符(取一勺) —– 按行(取一桶)
(1). 以行为单位读写,比较方便
(2). 相当于缓冲区 缓冲区每次取一行

读一行:
使用的是 BufferedReader的readLine()方法

写一行:
使用的是 PrintWriter的println()方法
按行写也可以用BufferedWriter的write()方法换一行是newLine();

public class TestBufferWritter {    public static void main(String[] args) {        // FileInputStream fis=null;        FileReader fr = null;        BufferedReader br = null;        FileWriter fw = null;        BufferedWriter bw = null;        // PrintWriter pw = null;        try {            fr = new FileReader("F:\\Bluemix\\chapter13\\20160416.txt");            br = new BufferedReader(fr);        } catch (FileNotFoundException e) {            System.out.println("文件不存在");            e.printStackTrace();        }        // 写        try {            fw = new FileWriter("F:\\Bluemix\\chapter13\\222222222.txt");            // pw = new PrintWriter(fw);            bw = new BufferedWriter(fw);            String str = null;            while ((str = br.readLine()) != null) {                /*if (br.ready()) {                    pw.print(str);                } else {                    pw.println(str);                }*/                bw.write(str);                bw.newLine();            }            System.out.println("写入成功!");        } catch (IOException e) {            System.out.println("写入失败");            e.printStackTrace();        } finally {            if (br != null) {                try {                    br.close();                } catch (IOException e) {                    System.out.println("br关闭失败");                    e.printStackTrace();                }            }            if (fr != null) {                try {                    fr.close();                } catch (IOException e) {                    System.out.println("fr关闭失败");                    e.printStackTrace();                }            }            if (bw != null) {                try {                    bw.close();                } catch (IOException e) {                    System.out.println("bw关闭失败");                    e.printStackTrace();                }            }            if (fw != null) {                try {                    fw.close();                } catch (IOException e) {                    System.out.println("fw关闭失败");                    e.printStackTrace();                }            }        }    }}

三,缓冲流

功能:减少和硬盘打交道次数 提高读写效率
字节流、字符流频繁和硬盘打交道 速度比较慢 效率低,可以使用缓冲提高效率。

带缓冲的流:
1.BufferedReader
2.BufferedWriter
3.PrintWriter

重点:缓冲区的内容写入到文件的三种情况:

1.调用BufferedWriter的flush()方法
2.缓冲流关闭 close();调用close()方式是系统缓冲的数据写到磁盘中
3.缓冲区满 ,默认缓冲区大小为16384个字节
实质char[] charArr = new char[8192];

这里写图片描述

1 0
原创粉丝点击