1、内存操作流
2、管道流
3、字节、字符转换流
4、字符的编码问题
5、打印流
6、System类对IO的支持
7、对象序列化
内存操作流
FileInputStream 和FileOutputStream的时候所有的操作的目标是文件,那么如果现在假设有一些临时的信息保存在文件之中则肯定很不合理,因为操作的最后还要把文件再删除掉,所以此时在IO就提供了一个内存的操作流,通过内存操作流输入和输出的目标是内存。【达内java培训】
使用ByteArrayOutputStream 和ByteArrayInputStream完成内存的操作流。
*在内存操作流中所有的输入和输出都是以内存为操作的源头
*ByteArrayOutputStream 是用于从内存向程序输出的。
*ByteArrayInputStream 是用于从程序向内存写入的。
ByteArrayInputStream的构造方法:public ByteArrayInputStream(byte[] buf)
*表示把内容向内存中写入。
ByteArrayOutputStream来讲,其基本的作用就是与OutputStream一样,一个个的读取数据。
范例:使用内存操作流,完成一个字符串由小写字母变成大写字母的操作:
[html] view plaincopy
01.package com.demo.io;
02.
03.import java.io.ByteArrayInputStream;
04.import java.io.ByteArrayOutputStream;
05.
06.public class ByteArrayIPSDemo {
07.
08.
09.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.}
String newStr = bOutputStream.toString();//取出内存输出的内容
此段代码非常重要,表示内存数据的取出。
管道流(了解)
管道流就是进行两个线程间通讯的。使用PipedOutputStream和PipedInputStream两个类完成,但是这两个类使用的时候基本上都跟OutputStream和InputStream类似,唯一区别的死在于连接管道的操作上。【达内java培训】
public void connect(PipedInputStream snk)throws IOException
范例:进行管道流的操作
[html] view plaincopy
01.package com.demo.io;
02.
03.import java.io.IOException;
04.import java.io.PipedInputStream;
05.import java.io.PipedOutputStream;
06.
07.public class PipedStreamDemo {
08.
09.
10.
11.
12.
13.
14.
15.
16.
17.
18.}
19.
22.class Send implements Runnable{
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.}
44.
47.class Receive implements Runnable{
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.}
73.
打印流(重点!!!)
使用OutputStream可以完成数据的输出,但是现在如果有一个float型数据好输出吗?
也就是说虽然现在提供了输出流的操作类,但是这个类本身的输出的支持功能并不是十分的强大,
所以,如果现在想要进行更方便的输出操作,则可以使用打印流。【达内java培训】
打印流分为两种: PrintStream(字节)、PrintWriter(字符)。
观察打印流的定义:
public class PrintStream extends FilterOutputStream implements Appendable,Closeable
public PrintStream(OutputStream out)
在此方法中要接收OutputStream子类的引用。
实际上 PrintStream属于装饰。也就是说根据实例化PrintStream类对象的不同,输出的位置也不同。
范例:使用PrintStream向文件输出
[html] view plaincopy
01.package com.demo.io;
02.
03.import java.io.File;
04.import java.io.FileNotFoundException;
05.import java.io.FileOutputStream;
06.import java.io.PrintStream;
07.
08.public class PrintDemo {
09.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.}
得出结论,使用打印流最为方便,所以建议以后在输出的时候就使用打印流完成。【达内java培训】
在JDK 1.5之后对打印流进行了更新,可以使用格式化输出。提供了以下的方法:
public PrintStream printf(String format,Object args)
可以设置格式和多个参数。
范例:使用PrintStream进行格式化的输出
[html] view plaincopy
01.package com.demo.io;
02.
03.import java.io.File;
04.import java.io.FileNotFoundException;
05.import java.io.FileOutputStream;
06.import java.io.PrintStream;
07.
08.public class PrintDemo2 {
09.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.}
20.