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的更多相关文章
随机推荐
- layui upload封装
<link rel="stylesheet" href="layui/css/layui.css"> <script src="js ...
- (转)sdd for aix 安装及基本命令
总结出自多个文件(自己做的项目和网上找的资料) 原文:http://blog.csdn.net/yujin2010good/article/details/11395701 一.sddpcm安装 要安 ...
- [Silverlight][linq to sql]不能找到linq to sql自动生成类型
最近在做Silverlight项目,结合使用了WCF RIA service,通过linq to sql自动生成model类型,使用起来非常方便.具体可见linq to sql之silverlight ...
- eureka 源码
本文为eureka学习笔记,错误之处请指正. ----------------------------------------------------------- 1.服务生产者是怎么注册到配置中心 ...
- 注册中心eureka
最近在忙一些其它的事情,两个城市来回跑还要办一些手续,挺费劲的,学习的事情也就耽误了一些,尽量赶吧. spring cloud为分布式的微服务架构提供了一站式的解决方案,eureka注册中心在spri ...
- JEECMS站群管理系统-- 自定义标签及使用自己创建的表的实现过程
下面是我自己定义的标签mycontent_list 首先,在数据库里创建了一个jc_mycontent的表,其中有id,title,content三个字段 其次,创建了一个实体类 public cla ...
- oracle 找回被覆盖的存储过程
登录到sys账户下 1.TO_TIMESTAMP('2014-05-04 14:33:00', 'YYYY-MM-DD HH24:MI:SS') 删除前的日期 2.owner 表空调 3.Name ...
- java学习第十四天
1:正则表达式(理解) (1)就是符合一定规则的字符串 (2)常见规则 A:字符 x 字符 x.举例:'a'表示字符a \\ 反斜线字符. \n 新行(换行)符 ('\u000A') \r 回车符 ( ...
- 【Linux】ping命令详解
1.ping指定目的地址10.10.0.1 为接口tun0 ping 10.10.0.1 -i tun0
- winfrom C#树勾选等
AfterCheck /// <summary> /// 树勾选 /// </summary> /// <param name="sender"> ...