对象流
- 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编码的文件@Testpublic 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编码方式的文件@Testpublic 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 |