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导入包,坑很多!