对象流
-
ObjectInputSteam
-
OjbectOutputSteam
-
序列化,用OOS类将一个java对象写入io流中,只传输gc的数据
-
反序列化,用OIS类从io流中恢复该java对象
-
要求
- 要求实现序列化和反序列化的对象必须已经实现了Serializable接口
- 读写顺序一致
-
方法,
- writeXX或writeObject
- readXX或readObject
-
RMI(远程方法调用)基础
-
Serializable接口有即可,做标志使用,表明这个类的对象可以被序列化
-
静态属性不在gc区中,无法序列化
-
不想被序列化:可以用关键词:transient 修饰
-
可以序列化数组,反序列化为数组,但要求数组中的元素,必须可以序列化
- 当作对象序列化
-
可以序列化集合,反序列化为集合,要求元素可以序列化
-
刷新
- bufWriter.flush();//把缓冲区的数据刷到磁盘
-
写入追加,
- new 流的时候进行添加第二参数true,改变重写为追加
转换流
- InputStreamReader
- 字节流转字符流
- 可以解码
- OutputStreamWriter
- 字符转字节流
- 可以编码
//读取UTF8编码的文件
@Test
public void testName2() {
FileInputStream fileInputStream = null;
InputStreamReader isr = null;
BufferedReader bufferedReader = null;
try {
fileInputStream = new FileInputStream("编码测试2.txt");
isr = new InputStreamReader(fileInputStream, "utf8"); // 第2个参数是告诉转换流, 我的文本文件中是UTF8编码方式的内容
bufferedReader = new BufferedReader(isr);
String readLine = bufferedReader.readLine();
while (readLine != null) {
// 处理数据
System.out.println(readLine);
// 继续读
readLine = bufferedReader.readLine();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (bufferedReader != null) {
try {
bufferedReader.close();
} catch (Exception e2) {
}
}
}
}
// 写一个UTF8编码方式的文件
@Test
public void testName3() {
FileOutputStream fos = null;
OutputStreamWriter osw = null;
BufferedWriter bufWriter = null;
try {
fos = new FileOutputStream("写一个utf8文本文件.txt");
osw = new OutputStreamWriter(fos, "utf8");
bufWriter = new BufferedWriter(osw);
bufWriter.write("abc我喜欢你1234567");
bufWriter.newLine();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (bufWriter != null) {
try {
bufWriter.close();
} catch (Exception e2) {
}
}
}
}
String类自转码
- Byte[] getBytes(String str = "gbk") //编码
- String String(byte b, String = "utf8")//解码
String string21 = new String(bytes1, "gbk");//缺省取操作系统编码方式
byte[] bytes1 = string.getBytes("gbk"); //缺省取操作系统编码方式,中国一般为gbk
System中的io
- System.in 标准流,
- System.in 属于 InputStream
- System.out.println() //标准的输出流
- System.err.println() //颜色不同,它的执行是在另一个线程里的
Scanner类
- Scanner 类,扫描器
- 扫描器各种空间
- boolean hasNext() //有没有下一个
- String next() //获取下一个
- 会用空格来分割字符
- String nextLine() //获取一行
- int nextInt() //获取整数
- boolean hasInt() //是否有下一个整数
- 等支持任意类型
打印流
处理流
数据流
File类
- 代表文件,和目录
- 主要方法
- boolean mkdir() //创建单层目录
- boolean mkdirs() //创建多层目录
- File listFiles() //列出目录下的所有的文件
- long length() //长度
- boolean delete() //删除
- boolean isDirectory() //是目录
- boolean isFile() //是文件
- String getName() //文件名或目录名
io流体系
分类 | 字节输入流 | 字节输出流 | 字符输入流 | 字符输入流 |
---|---|---|---|---|
抽象基类 | InputStream | OutputStream | Reader | Wtiter |
访问文件 | FileInputStream | FileOutputStream | FileReader | FileWtiter |
访问数组 | ByteArrayInputStream | ByteArrayOutputStream | CharArrayReader | CharArrayWtiter |
访问管道 | PipedInputStream | PipedOutputStream | PipedReader | PipedWriter |
访问字符串 | Reader | Writer | ||
缓冲流 | BufferedInputStream | BufferedOutputStream | BufferedReader | BufferedWriter |
转换流 | InputStreamReader | OutputStreamWriter | ||
对象流 | ObjectInputStream | ObjectOutputStream | ||
? | FilterInputStream | FilterOutputStream | FilterReader | FilterWriter |
打印流 | PrintStream | PrintWriter | ||
推回输入流 | PushbackInputStream | PushbackReader | ||
特殊流 | InputStream | OutputStream |