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的更多相关文章
随机推荐
- ssh RSA key变化后处理
root@localhost:/# scp -r root@172.19.47.30:/home/linux-4.16.2-devm.1.2.aarch64.dongbo ./@@@@@@@@@@@@ ...
- WSGI学习系列Paste
Paste has been under development for a while, and has lots of code in it. The code is largely decoup ...
- java连接数据库驱动代码综合共享
1.Oracle8/8i/9i数据库(thin模式)Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();S ...
- HDU 5336——XYZ and Drops——————【广搜BFS】
XYZ and Drops Time Limit: 3000/1500 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Tot ...
- C#读写txt文件的方法
1.添加命名空间 System.IO; System.Text; 2.文件的读取 #region 读取TXT文本文件 /// <summary> /// FileStream读取文本文件 ...
- Java入门之Tomcat运行
在上一篇<Java入门之Tomcat安装及环境变量配置>中提到,启动Tomcat要保持CMD下执行startup.bat的界面不关闭,才能访问Tomcat. 这是因为只有保持startup ...
- 软件测试技术第一次试验之——JUnit的安装与使用
众所周知,在一个大型的软件项目中,测试是必不可少的.传统的测试方法往往要自己编写测试函数再结合测试用例进行验证,这样会显得比较繁琐.所以我们可以使用JUnit框架进行测试. 使用junit的好处就是这 ...
- Python列表边遍历边修改问题解决方案:alist[:]
最近在看python,遇到个简单的问题:删除列表中指定的重复元素,发现一些实用并且有趣的东西. 1.错误示范 alist = [1,1,2,2,3,3,2,2,1,1] for i in alist: ...
- jquery-fullpage插件
jquery fullpage.js全屏滚动插件/jquery-easing插件 // 前端自动化工具安装插件 在页面引入: <link rel="stylesheet" h ...
- Java Knowledge series 5
Interface from user, not from implementor.(DIP) Interface-Oriented Programming. Interface or Abstrac ...