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的更多相关文章
随机推荐
- cad 安装失败/出错/卸载 2018/2017/2016/2015/2013/2012
AUTO Uninstaller 更新下载地址 1.选择CAD 2.选择版本 3.点击“开始卸载”
- [Silverlight][linq to sql]不能找到linq to sql自动生成类型
最近在做Silverlight项目,结合使用了WCF RIA service,通过linq to sql自动生成model类型,使用起来非常方便.具体可见linq to sql之silverlight ...
- 批量处理标签属性中document.getElementsByName()的替代方案
背景 今天在逛知乎时候,看到一个JavaScript方面的问题: 最近在学习JavaScript DOM,就好奇地查阅资料,以及请教学长,得到下面解答: http://www.w3help.org/z ...
- [PHP]AES加密----PHP服务端和Android客户端
本文采取128位AES-CBC模式加密和解密 1.首先对服务端安装mcrypt: sudo apt-get install php5-mcrypt php5-dev sudo php5enmod mc ...
- 封装RateLimiter 令牌桶算法
自定义注解封装RateLimiter.实例: @RequestMapping("/myOrder") @ExtRateLimiter(value = 10.0, timeOut = ...
- rman对应format参数说明
format 的替换变量,注意大小写! 1. %d --数据库的db_name 2. %n --数据库的8位长度的db_name,不足部分用“x”后面填充 3. %N -- ...
- 亲测SQLServer的最大连接数
很多做架构设计.程序开发.运维.技术管理的朋友可能或多或少有这样的困惑: SQLServer到底支持多少连接数的并发? SQLServer是否可以满足现有的应用吗? 现有的技术架构支持多少连接数的并发 ...
- HDU 4334——Trouble——————【贪心&水题】
Trouble Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Su ...
- NOPI导出execl 多个sheet,一列图片
NPOI API: http://www.cnblogs.com/atao/archive/2009/11/15/1603528.html http://blog.csdn.net/pan_junbi ...
- MVC4笔记 @functions @model @using
/////@functions自定义函数////// @helper辅助方法的确可以很方便的完成辅助方法开发,不过却失去了一些弹性,例如,无法在@helper中自定义属性,只能单纯的传入参数,然后格式 ...