JAVA 通过 OutputStream InputStream 实现文件复制功能
内存操作流
在之前讲解FileInputStream 和 FileOutputStream 的时候所有的操作的目标是文件,那么如果现在假设有一些临时的信息要求通过IO操作的话,那么如果将这些临时的信息保存在文件之中则肯定很不合理,因为操作的最后还要把文件再删除掉,所以此时的IO中就提供了一个内存的操作流,通过内存操作流输入和输出的目标是内存。
使用ByteArrayOutputStream 和 ByteArrayInputStream 完成内存的操作流
在内存操作流中所有的输入和输出都是以内存为操作的源头
ByteArrayOutputStream 是用于从内存向程序输出的
ByteArrayInputStream 是用于从程序向内存写入的
ByteArrayInputStream 的构造方法: public ByteArrayInputStream(byte[] buf)
表示把内容向内存之中写入
ByteArrayOutputStream来讲,其基本的作用就是与OutputStream一样,一个个的读取数据。
范例:使用内存操作流,完成一个字符串小写小母变为大写字每的操作
内存操作流现在在Java SE阶段是感觉不出有什么作用,但是在学习Java WEB 中的AJAX技术的时候,会结合XML解析和JavaScript、AJAX完成一些动态效果的使用
管道流就是进行两个线程间通讯的。使用PipedOutputStream 和 PipedInputStream 两个类完成。但是,这两个类使用的时候基本上都跟OutputStream 和InputStream类似,唯一区别的的是在于连接管道的操作上。
打印流
使用OutputStream 可以完成数据的输出,但是现在如果有一个float 型数据好输出吗?
也就是说虽然现在提供了输出流的操作类,但是这个类本身的输出的支持功能并不是十分的强大,所以,如果现在要想进行更方便的输出操作,则可以使用打印流。
打印流分两种:PrintStream、PrintWriter
观察打印流的定义:
PrintStream 是 OutputStream 的子类,继续观察其构造方法
实际上PrintStream 属于装饰。也就是说根据实例化 PrintStream 类对象的不同,输出的位置也不同
得出结论,使用打印流输出最为方便,所以建议以后在输出的时候就使用打印流完成
在JDK1.5之后对打印流进行了更新,可以使用格式化输出
可以设置格式和多个参数
在打印流中一定要始终记住以下的原则:根据实例化其子类的不同,完成的打印输出也不同