《Java大学教程》—第20章 文件处理
记录():一个单独的数据实例。
域():一个属性。
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章 文件处理的更多相关文章
- 正在学习的Java大学教程
推荐本书<Java大学教程> 看的人比较少,我也是多年不看书了,基于教程一般选国外的方法,从图书馆选了本书. 看了一半,感觉书的内容比较认真,对于基本的Java知识都算介绍全了,而且全书是 ...
- 《Java大学教程》—第23章 Java网络编程
本章主要关注的是Java的几个应用网络编程的场景,对于网络编程没有太多深入介绍,而Java本来也没有多少针对网络编程的特性.虽然Java有个Applet的概念,但是真用这个的开发的场景其实不多. 23 ...
- 《Java大学教程》—第24章 Java的背景
本章主要介绍的是Java的背景知识,通过了解历史知道Java与其他语言的区别,以便更好选择在什么场景下使用Java. 24.2 语言的尺寸Java语言短小.紧凑,以C++为基础,放弃了一些特定的 ...
- 《Java大学教程》—第19章 改进用户界面
用户与程序交互的媒介称为用户界面(user interface)或人机界面(human-computer interface). 19.2 Border接口8个实现Border接口的标准边框类: ...
- 《Java大学教程》—第18章 高级图形编程
自测题:1. 在图形应用程序中为用户提供选择的多种方式:P433下拉菜单(pull-down menu).弹出式菜单(pop-up menu).对话框窗口(dialogue window).单选 ...
- 《Java大学教程》—第16章 二维数组
多维(Multi-dimensional)数组维数由索引个数决定.常用的数组:一维(one-dimensional)数组.二维(two-dimensional)数组 16.2 创建二维数组索引从 ...
- 《Java大学教程》—第14章 抽象、继承和接口
自测题:1. 解释抽象和抽象数据类型的概念.P333抽象的概念是仅仅关注对象可以完成什么工作,而不必担心如何完成工作的细节.类模板通常被称为抽象数据类型.因为这类数据暴露给用户的所有信息仅仅是方 ...
- 《Java大学教程》—第12章 案例研究--第2部分
本章就是上一章的延续,主要是用GUI实现了控制界面. 编程练习:代码附件Hostel.java1. 正确运行2. Runhostel.java3. searchButton
- 《Java大学教程》—第11章 案例研究--第1部分
自测题:1. 图11-1的UML设计中各个类之间的关系.Hostel与TenantList是关联关系:TenantList和PaymentList与ObjectList是泛化关系.TenantL ...
随机推荐
- MyBatis学习总结(四)——MyBatis缓存与代码生成
一.MyBatis缓存 缓存可以提高系统性能,可以加快访问速度,减轻服务器压力,带来更好的用户体验.缓存用空间换时间,好的缓存是缓存命中率高的且数据量小的.缓存是一种非常重要的技术. 1.0.再次封装 ...
- T-SQL :SQL Server系统数据库(二)
master:master数据库储存实例范围的元数据信息,服务器配置,实例中的所有数据库信息和初始化信息. Resource:Resource数据库是一个隐藏,只读数据库,存储所有系统对象的定义.当查 ...
- C#中设置窗口在最前显示而其他窗口不能使用
对程序中的一个Form1处理,让其在打开的情况下,其他窗体都无法使用,全部焦点都在他身上. 1.这种方法最简单,直接调用窗体的模态对话框函数显示窗体 Form1.ShowDialog(): 2.设置窗 ...
- ASP.NET MVC 学习笔记-2.Razor语法
1. 表达式 表达式必须跟在“@”符号之后, 2. 代码块 代码块必须位于“@{}”中,并且每行代码必须以“:”结尾.代码块中定义的变量可能会被同一个域中的其他块使用. ...
- python使用gevent实现并发下载器
并发下载原理 import gevent from gevent import monkey import urllib.request monkey.patch_all() def my_downl ...
- 安装python3
由于centos已经自带了python,但是没有python3,楼楼接下来自己去安装下.截止到本文python的最新版本为3.7.1,官网的地址为:https://www.python.org/ 下载 ...
- Spring之AOP的注解配置
配置过程可以简单的分为3步: 1,业务类配置 在业务类前加入,将业务类交由Spring管理 @Component("s") 这个表示,这个业务类的Bean名字为 s . 2,将切点 ...
- JavaScript之Object对象常用属性与方法手册
MDN Object参考地址:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Obje ...
- cf1136E. Nastya Hasn't Written a Legend(二分 线段树)
题意 题目链接 Sol yy出了一个暴躁线段树的做法. 因为题目保证了 \(a_i + k_i <= a_{i+1}\) 那么我们每次修改时只需要考虑取max就行了. 显然从一个位置开始能影响到 ...
- SAP MM 物料主数据采购视图中的字段'Var. OUn'的作用?
SAP MM 物料主数据采购视图中的字段'Var. OUn'的作用? 物料主数据采购视图里有一个字段,叫做'Var. OUn'的, 如下图: 这个字段,笔者之前所参与的项目里,从来没有用过.所以,笔者 ...