字节流与字符流基本操作
程序需要数据的时候要使用输入流读取数据,程序需要将一些数据保存起来的时候就要使用输出流完成
字节流
在字节流中输出数据主要使用 OutoutStream 类完成,输入使用InputStream 类,在字符流中输出主要是使用Writer类完成,输入主要是Reader类完成
OutputStream是整个IO包中字节输出流的最大父类定义如下:
Public abstract class OutputStream
Extends Object
Implements Closeable,Flushable
字节输入流inputStream
Public abstract class InputStream
extends Object
Implements Closeable
字符流
字符输出流Writer
Public abstract class Writer
Extends Object
Implements Appendable,Closeable,Flushable
字符输入流Reader
Public abstract class Reader
Extends Object
Implements Readable,Closeable
字符流与字节流的区别
字节流是直接操作文件本身的,如果没有关闭字节流操作,文件会依然输出内容
而字符流在程序运行之后会发现文件没有任何的内容,这是因为字符流操作的时候使用了缓冲区,而在关闭字符流的时候会强制性地将缓冲区中的内容进行输出,但是如果程序没有关闭,缓冲区的内容是无法输出的
缓冲区:
可以见到地把缓冲区理解为一段特殊的内存,如果一个程序频繁地操作一个资源,则性能会下降很低,此时为了提升性能,就可以将一部分数据暂存到内存的一块区域中,以后直接从此区域中读取数据即可
转换流——OutputStreamWriter类与InputStreamReader类
OutputStreamWriter类:是Writer的子类,将输出的字符流变更为字节流
InputStreamReader类:是Reader的子类,将输出的字节流变更为字符流
内存操作流
字节内存流:ByteArrayInputStream(内存字节输入流)、ByteArrayOutPutStream(内存字节输出流)
字符内存流CharArrayReader(内存字符输入流)、CharArrayWriter(内存字符输出流)
管道流
主要作用是可以进行两个线程间的通信,分为管道输出流(PipedOutputStream)、管道输入流(PipedInputStream),要进行管道输出,必须要把输出流连在输入流上,在PipedOutStream类上:
Public void connect (PipedInputStream snk)throws IOException
打印流
在整个IO包中,打印流是输出信息最方便的类,主要包含字节打印流(PrintStream)和字符打印流(PrintWriter)
打印流提供了非常方便的打印功能,可以打印任何的数据类型
打印流格式化:可以直接使用printf()方法就可以完成操作
System类对IO的支持
System类的常量
1.public static final PrintStream out 对应系统标准输出,一般是显示器
2.Public static final PrintStream err 错误信息输出
3.Public static final InputStream in 对应着标准输入,一般是键盘