学习总结
字节流与字符流基本操作
字节流中输出主要用OutputStream类(通过子类实例化),输入主要用InputStream类(通过子类实例化);
字符流中输出主要用Writer类(通过子类实例化),输入主要用Reader类(通过子类实例化);
如果要操作一个文件:
字节流可以使用FileOutputStream类和FileInputStream类(各自有相应的操作方法);
字符流可以FileWriter类(是OutputStreamWriter的子类)和FileReader类(是InputStreamReader的子类)(各自有相应的操作方法);
字节流与字符流的区别
字节流在操作时不会用到缓存区,是基于文件本身直接操作(这种方式适用范围更广),而字符流在操作时使用到缓存区,通过缓存区再操作文件(这种方式效率更高),但是如果程序没有关闭,缓存区的内容也无法输出。
想在不关闭的时候也可以将字符流的内容输出,则可以使用Writer类中的flush()方法完成。
转换流
OutputStreamWriter:是Writer的子类,将一个字符流的输出对象变为字节流的输出对象。
InputStreamReader:是Reader的子类,将一个字节流的输入对象变为字符流的输入对象。
不管是用字节流还是字符流最终都是以字节的形式操作输入/输出流的。
管道流
要想进行管道输出,则必须把输出流连在输入流上。连接管道有:
public void connect(PipedInputStream snk) throws IOException
System类对IO的支持
PrintStream是OutputStream的子类
System类中的三个常量:out(系统标准输出,一般是显示器),err(错误信息输出),in(标准输入,一般是键盘)。
System.out是PrintStream的对象,在PrintStream中定义了一系列的print()和println()方法。
System.err是错误信息的输出。
System.in是一个键盘的输入流。
注意:
此处所有的输入输出都以程序为参照;
操作时要对异常进行处理。