Re: IO 二

新的风暴已经出现,再次出现的IO流,这次是专门针对字符处理的,单一性还是很强的。

  • 1.字符流是什么

    • 字符流是可以直接读写字符的IO流
    • 字符流读取字符, 就要先读取到字节数据, 然后转为字符. 如果要写出字符, 需要把字符转为字节再写出.
  • 2.FileReader

    • FileReader类的read()方法可以按照字符大小读取
    • FileReader fr = new FileReader(“aaa.txt”); //创建输入流对象,关联aaa.txt
      int ch;
      while((ch = fr.read()) != -1) { //将读到的字符赋值给ch
      System.out.println((char)ch); //将读到的字符强转后打印
      }
      fr.close(); //关流

然后便是用FileWriter来将write(“dos”)写出文件内。大部分内容和之前一样,例如:
FileReader fr = new FileReader(“a.txt”);
FileWriter fw = new FileWriter(“b.txt”);
int ch;
while((ch = fr.read()) != -1) {
fw.write(ch);
}
fr.close();
fw.close();

  • 字符流也可以拷贝非文本文件, 但不推荐使用. 因为读取时会把字节转为字符, 写出时还要把字符转回字节.
  • 程序需要读取一段文本, 或者需要写出一段文本的时候可以使用字符流
  • 读取的时候是按照字符的大小读取的,不会出现半个中文
  • 写出的时候可以直接将字符串写出,不用转换为字节数组

所以就当作不可以拷贝非纯文本的文件就好了。
同样的RW也可以加Buffered

  • BufferedReader的read()方法读取字符时会一次读取若干字符到缓冲区, 然后逐个返回给程序, 降低读取文件的次数, 提高效率
  • BufferedWriter的write()方法写出字符时会先写到缓冲区, 缓冲区写满时才会写到文件, 降低写文件的次数, 提高效率
  • BufferedReader的readLine()方法可以读取一行字符(不包含换行符号)
  • BufferedWriter的newLine()可以输出一个跨平台的换行符号"\r\n"

流还有其它的,例如

  • 序列流 SequenceInputStream 可以把多个字节输入流整合成一个, 从序列流中读取数据时,将从被整合的第一个流开始读, 读完一个之后继续读第二个,以此类推
  • 内存输出流 ByteArrayOutputStream
    • 该输出流可以向内存中写数据,把内存当作一个缓冲区,写出之后可以一次性获取出所有数据
    • 创建对象: new ByteArrayOutputStream()
    • 写出数据: write(int), write(byte[])
    • 获取数据: toByteArray()
      随机访问流概述和读写数据
  • 随机访问流概述
    • RandomAccessFile概述
    • RandomAccessFile类不属于流,是Object类的子类。但它融合了InputStream和OutputStream的功能。
    • 支持对随机访问文件的读取和写入。
  • read(), write(),seek()
    对象操作流ObjecOutputStream
    • 什么是对象操作流
    • 该流可以将一个对象写出,或者读取一个对象到程序中.也就是执行了序列化和反序列化的操作.
      *序列化 : 将对象写出到文件
      *反序列化 : 将文件中的字节数据翻译成对象
  • 使用方式
    • 写出: new ObjectOutputStream(OutputStream), writeObject()
      打印流的概述和特点
  • 什么是打印流
  • 该流可以很方便的将对象的toString()结果输出, 并且自动加上换行, 而且可以使用自动刷出的模式
  • System.out就是一个PrintStream, 其默认向控制台输出信息
    PrintStream ps = System.out;

别忘了.close();
ps:每日一词
烛影摇红

睡脸残慵,淡眉描画红颜浅。粉妆镜面乱新容,几是多重见。一点晕红长短,不更有、流苏顾盼。又回寻目,鸳鸯枕侣,日东云散。

烛影摇红,夜来炊饮需君返。重山复水玉门关,明月天涯远。归计去来须叹。路八千、一千一念。杨花独秀,孤雁徘徊,风声入院。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值