HeadFirst Java
本人有C语言基础,通过阅读Java廖雪峰网站,简单速成了java,但对其中一些入门概念有所疏漏,阅读本书以弥补。
第一章 Java入门
第二章 面向对象
第三章 变量
第四章 方法操作实例变量
第五章 程序实战
第六章 Java函数库
第七章 继承与多态
第八章 深入多态
第九章 构造器与垃圾收集器
第十章 数字与静态
第十一章 异常处理
第十二章 GUI(内部类)
第十三章 Swing
第十四章 保存对象
前言
继续前一小节内容,这一节主要讲文件的IO。也就是上一节提到的第二种方式。即有时需要把数据存到单纯的文本文件中。例如,你的servlet(web服务器上运行的java程序)会读取用户在网页输入的数据,并将它写入文本文件方便网站管理人分析。
将字符串写入文本文件
写入文本数据(字符串)与写入对象类似
文本文件的范例——e-Flashcard
java.io.File class
File类代表磁盘上的文件,但不是内容。可以理解为文件的路径、目录。该类提供一种比直接使用文件名表示文件更安全的表示文件方式。
常见用法:
缓冲区
作用:暂时摆一堆东西直到满。类似购物车~
比起直接调用FileWriter的write()方法写文件,减少了磁盘操作次数。写满再存
可以用 缓冲区的writer.flush()方法强制 缓冲区立即写入
读取文本文件
最常见的读取数据方式:while循环测试
缓冲区读空才会到文件读取磁盘(文件不是一次性读完的,一行一行读的;这里缓冲区链接(chain)文件链接串流(connect),可以理解为文件部分流动在缓冲区上(缓冲区先读最大限量),所以读完缓冲区的,再去读磁盘,而不是每次都直接读磁盘)
String的split()
String test = "a/b/c/d";
String[] tests = test.split('\');
按分割字符将字符串拆成多个字符串。
Version ID
前文已经学习常见的I/O,以及对应的Connect/Chain流组合。但还有一个重要的问题,类的变更会导致什么?
使用serialVersionUID
每当对象被序列化,都会被盖上一个类的版本识别ID。
当尝试还原时,会比对对象与JVM类上的这个SVUID,如果不符合(即更新了类),就会抛出异常。
解决的方法:更新类之后,将SVUID也放在类中
当然,这方式你必须确保你做的修改是上图中不会有影响的修改,且默认值合理。