热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

输入流输出流区分、文件读取乱码及爬虫读取文件原理

一.输入流输出流方向判断二.乱码原因字节数不够:通过字节流逐个读取字符集,字符集中包含中文表现:汉字显示不全字符集不统一:源文件和转换后的文件编码解码格式需统一表现:不能正确显示汉

一.输入流输出流方向判断


二.乱码原因


  1. 字节数不够:通过字节流逐个读取字符集,字符集中包含中文



  • 表现:汉字显示不全



  1. 字符集不统一:源文件和转换后的文件编码解码格式需统一



  • 表现:不能正确显示汉字



三.流分类介绍


  1. 字节流(InputStream,OutputStream)



  • 实现类:FileInputStream,FileOutputStream



  1. 字符流(Reader,Writer)



  • 实现类:FileReader,FileWriter



  1. 其他流



  • 转换流:InputStreamReader,OutputStreamWriter

    作用:通过装饰流输入流-->输出流

  • 装饰流

    • BufferedInputStream,BufferOutputStream

      • 作用:修饰字节流,提高运行效率



    • BufferedReader,BufferedWriter

      • 作用:修饰字符流,提高运行效率

      • 若想修饰字符流的装饰流(BufferedReader,BufferedWriter)修饰字节流需要通过转换流





  • 打印流:PrintStream,PrintWriter

    • 区别:PrintWriter属于字符流,需要通过flush()刷新管道

    • 作用:将对象格式打印到文本输出流,简言之,输出一段文本。

    • 重点:字节流转换成字符流多用输出流而非转换流



  • 对象流:ObjectInputStream,ObjectOutputStream

    • 作用:本地文件中传输、存储对象,网络传输中传输对象

    • 前提:被传输的对象需实现序列化接口




参考链接:https://www.cnblogs.com/ly411/p/14675416.html


四.测试(输入内容中英混合)

3.1 字节流写入,字节流读取



  • 程序截图



3.2 字符流写入,字符流读取



  • 程序截图



3.3 字节流写入,字符流读取



  • 程序截图



3.4 字符流写入,字节流读取



  • 程序截图



3.5 装修流写入读取,爬虫原理




  • 根据不同的输入流,选择不同的装饰流





  • 程序截图



五.总结


  • 根据输入源选择字节流或字符流

    • 传输内容为文本且中英混合,选择缓冲字符输入流按行读取,输出流任意

    • 传输内容为图片等二进制文件,用字节输出流写入,字节输入流读取



  • 流传输尽量用装饰流装饰,提高效率

  • 打印流输出内容不用装饰流,因为效率提高不明显。


附上本地文件和socket网络编程常用的流



推荐阅读
author-avatar
多米音乐_34053121
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有