记录():一个单独的数据实例。
域():一个属性。

20.3    输入和输出设备:P484
输入过程和输出过程。
操作系统负责建立三个流(stream):标准输入流(System.in)、标准输出流(System.out)、标准错误流(System.error)。
输入类:
*    InputStream:提供了许多处理基本输入的底层方法,主要处理字节序列。
*    InputStreamReader:提供了更高层的处理方法,主要处理字符序列。
*    BufferedReader:主要处理字符串形式的输入数据。

20.4    文件操作:P485
读(reading):输入过程是将数据从文件传送到存储器。
写(writing):输出过程是将数据从存储器传送到文件。
操作单位:字节、字符、字符串、文本行、基本数据类型、对象。

20.4.1    编码:文本、二进制、对象。P486

20.4.2    访问:顺序访问、随机访问。P486

20.5    读写文本文件:P491
FileWriter:文件输出,两种模式(输出模式、添加模式),底层方法。
PrintWriter:像输出到屏幕上一样,可以设置输出的格式,高层方法。
注:在将信息写入文件后,最重要的一步操作是关闭文件。
关闭文件的两个目的:保证将一个特殊的字符--文件结束符--写入文件的末尾。关闭文件意味着程序不能再访问该文件,防止出现错误的写入操作。

FileReader:以只读方式打开,底层方法。
BufferedReader:依次读取每个记录的每个域,高层方法。

20.6    读写二进制文件:P495
底层方法:FileOutputStream、FileInputStream
高层方法:DataOutputStream、DataInputStream

20.7    以字符为单位读取文本文件:P498
BufferedReader.read():从文件中读取一个字符。

20.8    对象序列化(Serialization):P499
将一个对象转化为适合磁盘存储的数据流的过程称为序列化(serialization)。
如果需要将对象序列化必须实现Serializable接口,这个接口不含有任何方法,被称为marker。
它的作用仅是提醒使用该类的用户:即该类的任何对象都可以以整个对象为单位读出或写入。

20.9    随机访问文件:P502
RandomAccessFile.seek():从开始读或写操作前将文件指针移动的字节数。
注:打开文件的模式(只读模式、读写模式)。
自测题:
1.    输入输出的原理:P484
输入过程是将数据从某个外部设备传送到内存;
输出过程是将数据从主存传送到某个外部设备。
为了实现输入和输出操作,必须在设备和计算机存储器之间建立一个通信管道。这样的管道称为流(stream)。

2.    输入流和输出流:P484
操作系统负责建立一个标准输入流(standard input stream)和标准输出流(standard output stream),以及一个标准错误流(stand error stream)用于显示错误信息。

3.    文本编码、二进制编码和对象编码的区别:P486
文本编码格式:存储在磁盘上的数据以字符的形式被外部系统使用--通常是ASCII码。
二进制编码格式:数据的存储格式与程序使用的数据的内部表示相同,即按照数据在存储器中的存储格式。
对象编码格式:数据是按照一个具体的完整的对象的方式来存取操作的。

4.    顺序访问文件和随机访问文件的区别:P486
顺序访问文件:依次读出(写入)每个数据元素。操作系统提供文件指针(file pointer),表示存储器中的一个位置,用于记录读写文件中到达的位置。
随机访问文件:直接到达需要的记录位置。

5.    Serializable接口的作用:P499
将一个对象转化为适合磁盘存储的数据流的过程称为序列化(serialization)。
如果需要将对象序列化必须实现Serializable接口,这个接口不含有任何方法,被称为marker。
它的作用仅是提醒使用该类的用户:即该类的任何对象都可以以整个对象为单位读出或写入。

6.    对象占用的字节数=4+2+(20+2)=28
private int x;
private char c;
private String s;

编程练习:代码附件
1.    BinaryFileTester.java
2.    FileHandler.java    RunFileHandler.java
3.    RandomFileTester.java
4.    ObjectFileTester.java
5.    先挖坑。。。

《Java大学教程》—第20章 文件处理的更多相关文章

  1. 正在学习的Java大学教程

    推荐本书<Java大学教程> 看的人比较少,我也是多年不看书了,基于教程一般选国外的方法,从图书馆选了本书. 看了一半,感觉书的内容比较认真,对于基本的Java知识都算介绍全了,而且全书是 ...

  2. 《Java大学教程》—第23章 Java网络编程

    本章主要关注的是Java的几个应用网络编程的场景,对于网络编程没有太多深入介绍,而Java本来也没有多少针对网络编程的特性.虽然Java有个Applet的概念,但是真用这个的开发的场景其实不多. 23 ...

  3. 《Java大学教程》—第24章 Java的背景

    本章主要介绍的是Java的背景知识,通过了解历史知道Java与其他语言的区别,以便更好选择在什么场景下使用Java. 24.2    语言的尺寸Java语言短小.紧凑,以C++为基础,放弃了一些特定的 ...

  4. 《Java大学教程》—第19章 改进用户界面

    用户与程序交互的媒介称为用户界面(user interface)或人机界面(human-computer interface). 19.2    Border接口8个实现Border接口的标准边框类: ...

  5. 《Java大学教程》—第18章 高级图形编程

    自测题:1.    在图形应用程序中为用户提供选择的多种方式:P433下拉菜单(pull-down menu).弹出式菜单(pop-up menu).对话框窗口(dialogue window).单选 ...

  6. 《Java大学教程》—第16章 二维数组

    多维(Multi-dimensional)数组维数由索引个数决定.常用的数组:一维(one-dimensional)数组.二维(two-dimensional)数组 16.2    创建二维数组索引从 ...

  7. 《Java大学教程》—第14章 抽象、继承和接口

    自测题:1.    解释抽象和抽象数据类型的概念.P333抽象的概念是仅仅关注对象可以完成什么工作,而不必担心如何完成工作的细节.类模板通常被称为抽象数据类型.因为这类数据暴露给用户的所有信息仅仅是方 ...

  8. 《Java大学教程》—第12章 案例研究--第2部分

    本章就是上一章的延续,主要是用GUI实现了控制界面. 编程练习:代码附件Hostel.java1.    正确运行2.    Runhostel.java3.    searchButton

  9. 《Java大学教程》—第11章 案例研究--第1部分

    自测题:1.    图11-1的UML设计中各个类之间的关系.Hostel与TenantList是关联关系:TenantList和PaymentList与ObjectList是泛化关系.TenantL ...

随机推荐

  1. 【转】CentOS系统操作下安装相关各种软件

    CentOS系统是非常强大经常应用的系统,我就对CentOS系统深入探讨学习,对大家概括讲述CentOS系统应用,希望对大家有用.虽然CentOS Linux使用了RHEL的源代码,但是由于这些源代码 ...

  2. 【转载】阿里云Windows服务器快速部署PHP运行环境

    PHP也是一种常用的网站脚本语言,时常用于网站应用程序的编写,PHP运行环境包含几个要素:PHP.Apache服务器.MySql数据库,此3个要素是Php网站运行的必要条件.在阿里云的Windows服 ...

  3. 《深入理解Java虚拟机》(三)垃圾收集器与内存分配策略

    垃圾收集器与内存分配策略 详解 3.1 概述 本文参考的是周志明的 <深入理解Java虚拟机>第三章 ,为了整理思路,简单记录一下,方便后期查阅. 3.2 对象已死吗 在垃圾收集器进行回收 ...

  4. Discuz网警过滤关键词库

    积累近几年discuz关键词过滤 使用方法:1.进入后台/内容/词语过滤批量添加.2.打开CensorWords.txt,复制里面的文本信息到批量添加的输入框内,点击确定即可.如图: 关键词下载:Ke ...

  5. Java学习笔记之——封装

    1. 属性和方法放到类中 2. 信息的隐藏 (1) 属性的隐藏 (2) 方法实现的细节隐藏 3. 权限修饰符: 从小到大的顺序:private->默认的(什么都不写)->protected ...

  6. Python3 系列之 可变参数和关键字参数

    刚开始接触 python 的时候,对 python 中的 *wargs (可变参数) 和 **kwargs (关键字参数)的理解不是很透彻,看了一下 <Explore Python>一书, ...

  7. 开源前端脚本错误监控及跟踪解决项目-BadJS 试用

    BadJS 是 一个web 前端脚本错误监控及跟踪项目.此项目为鹅厂 imweb(qq群:179045421) 团队的开源项目.此项目支持单机,集群,docker.存储支持mongodb等. 官网文档 ...

  8. javascript模块化编程-立即执行函数(IIFE)

    IIFE 全拼Imdiately Invoked Function Expression,立即执行的函数表达式. 语法 var module1 = (function(){ var _count = ...

  9. JS对url进行编码和解码(三种方式区别)

    Javascript语言用于编码的函数,一共有三个,最古老的一个就是escape().虽然这个函数现在已经不提倡使用了,但是由于历史原因,很多地方还在使用它,所以有必要先从它讲起. escape 和 ...

  10. 2018-01-02 JavaScript实现ZLOGO: 用语法树实现多层循环

    原址: https://zhuanlan.zhihu.com/p/32571516 照例先上演示弱效果图. 演示地址照旧: 代码如下: 开始 循环4次 循环4次 前进50 左转90度 到此为止 右转9 ...