24File与IO

CPU:这个世界慢!死!了!

一切文件的本质

  • 一段字节流:
  • 文本文件(txt/代码/HTML等)
  • 二进制⽂文件
  • 每个程序负责解释⽂文件中的字节流

InputStream/OutputStream

  • 抽象的输入/输出操作,无论是:
  • 文件写入字节流【实战】
  • 从网络读取字节流【实战】
  • 从其他什么破烂玩意读取字节流【实战】
  • 谨记:
  • 如果你不是对文件系统十分熟悉的话,请永远使用绝对路径!!!!

Java中的File

  • 不不要误会!不要误会!不要误会!
  • File并不代表一个“文件”,它只代表一个“路路径”
  • 抽象的“文件”路径:文件或者文件夹
  • File的常见方法
  • 绝对路径与相对路径
  • 读/写文件
  • NIO (Java 7+)
  • New IO 新的IO
  • Non-blocking IO 非阻塞IO
  • NIO的Path - 就是旧版本的File

IO太慢了,怎么办?

  • BufferedReader/Writer
  • 换⾏行行符的故事
  • BufferedReader - 一次性读取好多东西到缓冲区里
  • BufferedWriter - 一次性写好多东西到缓冲区里
  • 在内存中创建好,一次写入

烦人的IOException

  • Java的异常体系简介
  • 在return语句之外,为方法提供另外一种出口
  • IOException通常代表“预期之内的异常”
  • 万能解决方案

Java中的NIO

  • Path与File
  • 最常用的Files类
  • NIO简介

其实……不需要重复发明轮子

  • 需要任何IO的功能,尽管搜索,肯定有人把轮子造好了。
  • FileUtils
  • IOUtils

try/catch/finally

  • 如果没有try,异常将击穿所有的栈帧
  • catch可以将一个异常抓住
  • finally执行清理工作
  • JDK7+:try-with-resources

Java的异常体系

  • Throwable - 可以被抛出的东西
  • Exception - checked execption(受检异常)
  • RuntimeException (运行时异常)
  • Error (错误)

实战:将爬虫数据保存至文件

  • CSV简介
  • 读取/写入结构化数据

练习题
使用多种方法读写文件
爬取GitHub的Pull request并存储为CSV文件

「资料来源:饥人谷」

吸取教训:
比如爬取GitHub的Pull request并存储为CSV文件这个例子里,就是报错已经明明白白的告诉在哪里打断点了,顺藤摸瓜找准地方打断点!!
还有不要暂停maven导入包,坑很多!

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注