复习java: I/O
来源:互联网 发布:mysql乐观锁怎么实现 编辑:程序博客网 时间:2024/06/11 23:53
java类库中常常使用"流"这个概念,它代表任何有能力产出数据的数据源对象或是有能力接受数据的接收端对象
大体来说 I/O 包可以分为节点流类和包装类,有点类似路由和终端用户.
InputStream节点流:
ByteArrayInputStream FileInputStream PipedInputStream
OutputStream节点流:
ByteArrayOutputStream FileOutputStream PipedOutputStream
FilterInputStream类型包装类:
DataInputStream BufferedInputStream PushbackInputStream
FilterOutputStream类形包装类:
DataOutputStream BufferedOutputStream PrintStream
在java1.1之后,为了满足国际化的需要,又推出了Reader和Writer类,主要是解决 字符问题的,而InputStream和OutputStream是为了解决字节问题的,但不是说后面两个类就已经被完全淘汰了.DataInputStream 有时候还是挺有用的.
java1.1类相应的节点类:
Reader CharArrayReader FileReader
Writer CharArrayWriter FileWriter
相应的包装类:
FilterReader BufferedReader LineNumberReader PushBackReader
FilterWriter BufferedWriter PrintWriter
通过InputStreamReader和OutputStream可以把InputStream和OutputStream转换成
Reader和Writer
比较特殊一点的,DataOutputStream File RandomAccessFile
SequenceInputStream
例子:
BufferedReader in = new BufferedReader(new FileReader("Test.java"));
包装类与节点类的结合,Buffered充当了缓冲区
StringReader in = new StringReader(str) //String str = .......
DataInputStream in = new DataInputStream(new ByteArrayInputStrea(str.getByte()));
PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("Test.txt")));
格式输出:
DataOutputStream out = new DataOutputStream(new BufferedOutputStream(
new FileOutputStream("Data.txt")));
out.writeUTF("..........");
out.writeDouble(1.234);
格式输入:
DataInputStream in = new DataInputStream(new BufferedInputStream(
new FileInputStream("Data.txt")));
in.readUTF();
in.readDouble();
注意结束时要调用close(),以保证将缓冲区的内容清空.
管道流主要运用与线程之间的通讯.
I/O重定向:
setIn(InputStream) setOut(PrintStream) setErr(PrintStream)
最后看一下标准输入,一次读一行输入然后打印,首先是未包装的:
while(true) {
ch = System.in.read();
switch(ch) {
case '/r':
break;
case'/n':
info = new String(buf,0,pose);
break;
default:
buf[pose++] = (byte)ch;
}
}
将System.in包装后为:
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String str;
while( (s=in.readLine()) != null && str.length() != 0 )
System.out.println(str);
另外还有序列化,压缩等,值得注意的是1.4版又推出了NIO,就是新I/O,但是老的I/O仍然有使用价值.
- 复习java: I/O
- Java中的I/O流复习
- Java复习(5)-I/O
- java复习之I/O流
- Java知识复习(I/O)
- 黑马程序员—java基础复习—I/O流
- Java复习笔记[6] —— 文件I/O
- JAVA 复习(Think In Java, 4th) -- File I/O -- Part 1
- JAVA 复习(Think In Java, 4th) -- File I/O -- part 2
- I/O相关知识复习一
- I/O相关知识复习二
- 操作系统复习-5.1 I/O管理概述
- 操作系统复习-5.2 I/O核心子系统
- linux复习——I/O复用
- Java I/O系统----------- 标准I/O
- Socket Java I/O Socket I/O
- Java I/O流复习(一)—File类、字节流、字节缓冲流
- (七)、Java复习笔记之 I/O 流(1)
- win2003改远程登陆端口号(修改3389默认端口)
- 如何学习vc++(vc的用处)
- 一百个最有用的网站地址
- MAX_BONUS
- FORTRAN语言编译器---词法分析(C语言简易版)
- 复习java: I/O
- meta标签之详解
- 静态数据成员的初始值的指定
- 扩展类型带来的问题
- FireFox 的真正魅力:插件
- ASP.Net 2.0 - Master Pages
- VS2005中自定义自增主键数据表操作的快捷开发
- 为图像加入版权信息
- 使用C语言开发操作系统(1)