Java 输入输出流

     这篇不是为了系统介绍Java的输入输出流机制的,仅为个人笔记

     作为Java小菜,每次上网搜别人的Java读写文件的程序参考,总觉得一头雾水,为什么要声明这么多类,规则是什么,全然分からない,所以带着疑问稍微了解了一下;

     Java中存在两种输入输出模式的类,面向字节(InputStream&OutputStream)和面向字符(Reader&Writer),另外还有一个处理文件和文件夹的类(File);

     Java的输入输出流类采用装饰者模式,由以上5个类衍生出许许多多其他类,这里放一张网上搜到的图,大家感受下

       Java支持很多类型的输入源和输出端,但这里不打算展开讲,我只想聊聊文件的读取和输出。众所周知,计算机访问外部设备非常耗时,而访问缓冲区则很快。因此为了提高读写文件的效率,除了程序与流节点之间必要的读写机制外,还需要增加缓冲机制。

 具体例子如下:

package com.practise.test;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.io.OutputStreamWriter;
import java.io.BufferedWriter;
//所有以 Stream 结尾的类都是面向字节如 FileInputStream/FileOutputStream
//以 Reader/Writer 结尾的类是面向字符
//以 File 开头的类是面向外存
//以 Buffered 开头的类是面向缓冲区
public class ReadAndWrite 
{
    public static void main (String[] args)
    {
        String path = "D:\\Coding\\Java\\TestJava\\testdata\\";
        try {
            File inFile = new File(path + "in.txt");
            File outFile = new File(path + "out.txt");
            InputStreamReader inSr = new InputStreamReader( new FileInputStream(inFile));
            BufferedReader inBr = new BufferedReader(inSr);
            
            OutputStreamWriter outSw = new OutputStreamWriter( new FileOutputStream(outFile));
            BufferedWriter outBw = new BufferedWriter(outSw); 
            
            String line = "";
            while ((line = inBr.readLine()) != null)
            {
                outBw.write(line + "\r\n");
            }
            outBw.close();
            outSw.close();
            inBr.close();
            inSr.close();            
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }        
    }
}
View Code

 

posted @ 2018-04-15 21:28  Sawako  阅读(217)  评论(0编辑  收藏  举报