Java I/O

  1. File类
    实用类库工具:帮助我们处理文件目录的问题。
    File既能代表一个特定文件的名称,又能代表一个目录下的一组文件的名称。
    如果它指的是一个文件集,那就可以对此集合调用list()方法, 这个方法会返回一个字符数组。

1.1 目录列表器

如果想查看File对象包含的全部列表,那就调用不带参数的list()方法。
如果想获得一个受限列表,就要用到目录过滤器。

1.2 目录实用工具

  1. 输入和输出
    流是一个抽象的概念,它代表任何有能力产出数据的数据源对象或者是有能力接受数据的数据端对象,流屏蔽了实际的IO设备中处理数据的细节。
    任何自InputStream或Reader派生而来的类都含有名为read()的基本方法,用于读取单个字节或者字节数组。
    任何自OutputStream或Writer派生而来的类都含有名为write()的基本方法,用于写单个字节或字节数组。
    我们很少通过单一的类来创建流对象,而是通过叠合多个对象来提供所期望的功能。

  2. 添加属性和有用的接口
    FilterInputStream和FilterOutputStream是用来提供装饰器类接口已控制特定输入流和输出流的两个类。

3.1 通过FilterInputStream从InputStream读取数据

FilterInputStream类能够完成两件完全不同的事情。
DateInputStream允许我们读取不同的基本类型数据以及String对象。
其他FilterInputStream类则在内部修改InputStream的行为方式。

3.2 通过FilterOutputStream向OutputSteam写入 ###

类 功能 Cool
col 3 is right-aligned $1600
col 2 is centered $12
zebra stripes are neat $1

  1. Reader和Writer
    Reader和Writer的继承层次结构主要是为了国际化。老的IO流仅支持8位字节流,不能很好耳钉处理16位的Unicode字符。

4.1 数据的来源和去处

也就是各种read相对应的writer类

4.2 更改流的行为

4.3 未发生变化的类

有些类在Java1.0和Java1.1之间没有发生改变

  1. 自我独立的类: RandomAccessFile
    RandomAccessFile适用于由大小已知的记录组成的文件。
    RandomAccessFile的工作方式类似于把DataInputStream和DataOutStream组合起来使用,还添加了一些方法。

  2. I/O流的典型使用方式
    6.1 缓冲输入文件

6.2 从内存输入

6.3 格式化的内存输入

使用DateInputStream, 它是一个面向字节的IO类。所以W我们必须使用InputStream类而不是Reader类。

6.4 基本的文件输出

6.5 存储和恢复数据

6.6 读写随机访问文件

6.7 管道流

用于任务之间的通信

  1. 文件读写的实用工具
    读取文件到内存,修改然后写出,这样的常见操作需要写相当多的代码。所以我们需要在类库中添加帮助类。

  2. 标准I/O
    8.1 从标准输入中读取

8.2 将System.out转换成PrintWriter

PrintWriter out = new PrintWriter(System.out, true); out.println("Hello, world");
8.3 标准IO重定向

  1. 进程控制
  2. 新I/O
  3. 压缩
    JavaIo支持读写压缩格式的数据流。 属于InputStream和OutputSteam继承层次结构的一部分。

11.1 用GZIP进行简单压缩

直接将输出流封装成GZIPOutputStream或者ZipOutputStream。
输出流封装成GZIPInputStream或者ZipInputStream。

11.2 用Zip进行多文件保存

11.3 Java档案文件

命令符

  1. 对象序列化
    Java的对象序列化将那些实现了Serializable接口的对象转换成一个字节序列,并能够在以后将这个字节序列完全恢复为原来的对象。

12.1 寻找类

通过序列化来还原对象的时候,必须保证Java虚拟机能够找到相关的.class文件

12.2 序列化的控制

某些特定子对象不想让Java的序列化机制自动保存与恢复,而是重新创建。
对于Serializable对象,对象完全以它存储的二进制位为基础来构造,而不调用构造器。
而对于Externalizable对象,所有普通的默认构造器都会被调用,(包括在字段定义时的初始化),然后再调用readExternal()。
如果我们从一个Externalizable对象继承,通常需要调用基类版本的writeExternal()和readExternal()来为基类组件提供恰当的存储和恢复功能。
所以我们要writeExternal()方法中将来自对象的重要信息写入,还必须在readExternal()中恢复数据。

transient(瞬时)关键字

某些特定子对象不想让Java的序列化机制自动保存与恢复。
方法一是将类实现为Externalizable。
方法二是将类实现为Serializable,然后利用transient关键字逐个字段地关闭序列化。

Externalizable的替代方法

如果不是特别坚持实现Externalizable接口,那么可以实现Serializable接口,并添加writeObject()和readObject()方法。
在调用ObjectOutputStream.writeObject()时,会检查所传递的Serializable对象,看看是否实现了它自己的writeObject()方法,如果是这样,就跳过正常的序列化过程并调用它的writeObject()。
readObject()相同。

12.3 使用“持久性

  1. XML

  2. Preferences

  3. 总结

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,744评论 6 502
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,505评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,105评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,242评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,269评论 6 389
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,215评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,096评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,939评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,354评论 1 311
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,573评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,745评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,448评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,048评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,683评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,838评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,776评论 2 369
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,652评论 2 354

推荐阅读更多精彩内容

  • 压缩 1.Java I/O类库中的类支持读写压缩格式的数据流。由于压缩类库是按字节方式处理的而不是字符方式,因此这...
    zpauly阅读 632评论 0 0
  • I/O类的结构体系 I/O体系包含字节流、字符流、文件流和一个接口Serializable。字节流包含输入流Inp...
    一一道长一一阅读 301评论 0 0
  • JAVA序列化机制的深入研究 对象序列化的最主要的用处就是在传递,和保存对象(object)的时候,保证对象的完整...
    时待吾阅读 10,863评论 0 24
  • 早上人真的少,三点半全买完单,等到四点半下班。 和西西去了爱咖啡,吃了抹茶和芒果千层。
    黑莓味牙膏阅读 77评论 0 0
  • 一 UIScrollView 简介 1. contentSize : 设置 滚动范围 1. 必须大于scrollV...
    dicesc阅读 624评论 0 0