io流2

对象流

  • 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
原文地址:https://www.cnblogs.com/refengqingfu/p/10003900.html