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

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. SQLite占用资源少原因

    本篇承接上篇SQLite详解的下篇,介绍SQLIte为什么占用资源少的原因?本文主要参考https://blog.csdn.net/hanyingzhong/article/details/46400 ...

  2. TensorFlow(2)Softmax Regression

    Softmax Regression Chapter Basics generate random Tensors Three usual activation function in Neural ...

  3. [转]Rabbitmq的使用及Web监控工具使用

    本文转自:https://blog.csdn.net/xingxing513234072/article/details/51014850 一.文档资料        1.官方网站:http://ww ...

  4. 从零开始学安全(十九)●PHP数组函数

    $temp= array(1,2,3,,,,) 创建一个数组赋值给temp $id=range(1,6,2);     成长值   1到6  跨度为2  就是3个长度数组 也可以是字符“a” &quo ...

  5. Netty实战十四之案例研究(一)

    1.Droplr——构建移动服务 Bruno de Carvalho,首席架构师 在Droplr,我们在我的基础设施的核心部分.从我们的API服务器到辅助服务的各个部分都使用了Netty. 这是一个关 ...

  6. Java学习笔记之——常用类

    Random,String,Math 1.Random Random()  创建一个新的随机数生成器 案例:产生3个5-10的随机数 运行结果 注意:   2.StingBuffer,StringBu ...

  7. 汇编语言--微机CPU的指令系统(五)(比较运算指令)

    (7)比较运算指令 在程序中,我们要时常根据某个变量或表达式的取值去执行不同指令,从而使程序表现出有不同的功能.为了配合这样的操作,在CPU的指令系统中提供了各种不同的比较指令.通过这些比较指令的执行 ...

  8. 汇编语言--微机CPU的指令系统(五)(算术运算指令)

    (3)算术运算指令 算术运算指令是反映CPU计算能力的一组指令,也是编程时经常使用的一组指令.它包括:加.减.乘.除及其相关的辅助指令. 该组指令的操作数可以是8位.16位和32位(80386+).当 ...

  9. vue从入门到进阶:计算属性computed与侦听器watch(三)

    计算属性computed 模板内的表达式非常便利,但是设计它们的初衷是用于简单运算的.在模板中放入太多的逻辑会让模板过重且难以维护.例如: <div id="example" ...

  10. SELinux app权限配置

    摘要:1.SEAndroidapp分类SELinux(或SEAndroid)将app划分为主要三种类型(根据user不同,也有其他的domain类型):1)untrusted_app 第三方app,没 ...