标签:面向 test null NPU path one pre 缓冲区 一个
这篇不是为了系统介绍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(); } } }
标签:面向 test null NPU path one pre 缓冲区 一个
原文地址:https://www.cnblogs.com/SawakoJ/p/8849575.html