08_1_IO
08_1_IO
1. 输入/输出流的分类
java.io包中定义了多个流类型(类或抽象类)来实现输入/输出功能;可以从不同的角度对其进行分类:
按数据流的方向不同可以分给输入流和输出流。
按处理数据单位不同可以分为字节流和字符流。
按照功能不同可以分为节点流和处理流。
|
字节流 |
字符流 |
|
|
输入流 |
InputStream |
Reader |
|
输出流 |
OutputStream |
Write |
2. 节点流和处理流
节点流为可以从一个特定的数据源(节点)读写数据(如:文件,内存)
处理流是“连接”在已存在的流(节点流或处理流)之上,通过对数据的处理为程序提供更为强大的读写功能。
3. 节点流类型
|
类型 |
字符流 |
字节流 |
|
File(文件) |
FileReader FileWriter |
FileInputStream FileOutputStream |
|
Memory Array |
CharArrayReader CharArrayWriter |
ByteArrayInputStream ByteArrayOutputStream |
|
Memory String |
StringReader StringWriter |
|
|
Pipe(管道) |
PipedReader PipedWriter |
PipedInputStream PipedOutputStream |
4. 处理流类型
|
处理类型 |
字符流 |
字节流 |
|
Buffering |
BufferedReader BufferedWriter |
BufferedInputStream BufferedOutputStream |
|
Filtering |
FilterReader FilterWriter |
FilterInputStream FilterOutputStream |
|
Converting between bytes and character |
InputStreamReader OutputStreamWriter |
|
|
Object Serialization |
ObjectInputStream ObjectOutputStream |
|
|
Data coversion |
DataInputStream DataOutputStrearm |
|
|
Counting |
LineNumberReadeer |
LineNumberInputStream |
|
Peeking ahead |
PushbackReader |
PushbackInputStream |
|
Printing |
PrintWriter |
PrintStream |
5. Object流
serializable 序列化,将一个对象,转换为字节流保存到硬盘。
package Test;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutput;
import java.io.ObjectOutputStream;
import java.io.Serializable; public class TestObjectIO { public static void main(String[] args) throws Exception {
T t = new T();
t.k = 30;
FileOutputStream fos = new FileOutputStream("F:/TestObjectIO.txt");
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(t);
oos.flush();
oos.close();
FileInputStream fis = new FileInputStream("F:/TestObjectIO.txt");
ObjectInputStream ois = new ObjectInputStream(fis);
T a = (T)ois.readObject();
System.out.println(a.i +" " + a.j + " " + a.d + " " + a.k);
fos.close();
fis.close();
ois.close();
}
}
class T implements Serializable { int i = 10;
int j = 20;
double d = 3.2;
//transient 在序列化的时候,不予考虑,也及读出来之后为0
transient int k = 15;
}
08_1_IO的更多相关文章
随机推荐
- RTT设备与驱动之PIN设备
单片机的PIN有2个基本功能:GPIO和AFIO,其中gpio的常用功能: 1 输入:上拉.下拉.模拟.浮动 2 输出:上拉.下拉.推挽.开漏 3 中断:上升沿.下降沿.双沿.高电平.低电平触发 RT ...
- (转)linux route命令深入浅出与实战案例精讲
linux route命令深入浅出与实战案例精讲 http://blog.51cto.com/oldboy/1119453 深入浅出之-route命令实战使用指南 http://blog.51cto. ...
- 拼json对象批量向后台添加数据
网站中如果遇到批量提交格式相同数据,可以使用json来传输 $("#catalogSave").click(function(){ var array=[]; $("[n ...
- Oracle Functions转成Ms-Sql procedure
最近公司的一些Oracle项目要转到Ms_sql上,在把Oracle Functions改成MS-Sql的Procedure时,遇到了翻译的问题. 罗列出这些问题: 一.Oracle 基本类型 ora ...
- 《Head First 设计模式》之代理模式
代理模式(Proxy):控制对象访问 ——为另一个对象提供一个替身或占位符来访问这个对象. 要点: 代理模式有许多变体,如:缓存代理.同步代理.防火墙代理和写入时复制代理 代理在结构上类似装饰者,但目 ...
- wamp环境初步使用
在wamp的www目录下部署页面,localhost/目录/index.html
- Python介绍以及Python环境搭建
Python介绍以及Python环境搭建 1.Python 发展历史 Python是由Guido van Rossum在八十年代末和九十年代初,在荷兰国家数学和计算机科学研究所设计出来的,据说是在圣诞 ...
- js获取农历日期【转】
var CalendarData=new Array(100); var madd=new Array(12); var tgString="甲乙丙丁戊己庚辛壬癸"; var dz ...
- 【MATLAB】画信号频谱的子函数
输入信号序列和采样率,该子函数可以画出该信号的频谱图. function [f,spec,NFFT]=spec_fft_plot(sample,L,Fs) % 输入数据说明: % sample:信号序 ...
- eclipse 中 添加 tomcat后,启动访问时出现404
1.切换到 server view. 2.双击出问题的 Server,出现如下页面. 3.选中Server,右键,点击选项卡的 Publish,就能进行编辑. 4.Server path 选中第二项: ...