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

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. [转]VS2015 Cordova Ionic移动开发(一)

    本文转自:https://www.cnblogs.com/UltimateAvalon/p/5328642.html 一.Windows环境配置 1.如果已经安装VS2015,打开[工具]-[选项]找 ...

  2. GET和POST两种基本请求方法的区别(转)

    GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二. 最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数. 你可能自己 ...

  3. 自动化运维经验谈,以及为什么Docker是革命性的

    互联网+的需要 在信息越来越繁杂的互联网时代,公司所运行的项目越来越多,项目相关服务繁多,服务之间存在复杂的依赖关系,运维与管理任务越来越繁重,手工交付需要花费很多的人力与时间,且安全性和时效性均无法 ...

  4. Java并发编程-CountDownLatch

    基于AQS的前世今生,来学习并发工具类CountDownLatch.本文将从CountDownLatch的应用场景.源码原理解析来学习这个并发工具类. 1. 应用场景 CountDownLatch是并 ...

  5. 8;XHTML 框架

    1.多窗框的基本结构 2.嵌套多窗体设置 3.多框架与超链接 4.悬浮窗体的设置 浏览器视窗本身就是一个框架,网页就是显示在该单 一的框架内,本章将介绍另一种网页呈现的方式,那就是可将原先单一的框架分 ...

  6. Go开发之路 -- Go语言基本语法

    一. 变量 1.1 变量的声明 Go 语言的每一个变量都拥有自己的类型,必须经过声明才能开始用. 标准格式: var 变量名 变量类型 变量的声明以关键字 var 开头,行尾不需要写分号 常见变量的数 ...

  7. es6 语法 (字符串扩展)

    { console.log('a',`\u0061`); //a,a console.log('s',`\u20BB7`); //s ₻7 console.log('s',`\u{20BB7}`) / ...

  8. JS无法获取display为none的隐藏元素的宽度和高度的解决方案

    在实际开发中会遇到确实需要获取隐藏元素的宽高,这儿所说的隐藏元素是display为none的元素. 可使用jQuery Actual Plugin插件来完成,其源码如下: ;( function ( ...

  9. 洛谷P4462 [CQOI2018]异或序列(莫队)

    题意 题目链接 Sol 一开始以为K每次都是给出的想了半天不会做. 然而发现读错题了维护个前缀异或和然后直接莫队搞就行,. #include<bits/stdc++.h> #define ...

  10. Python 一键拉取Git分支源码自动解析并执行SQL语句

    基于Python实现自动拉取Git分支源码自动解析并执行SQL语句 by:授客 QQ:1033553122 1.代码用途 开发过程中,研发人员会提交SQL更新脚本到Git源码库,然后测试负责去拉取这些 ...