当前位置: 首页 > news >正文

java读写二进制文件 移动指针 seek,《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.    先挖坑。。。

posted on 2016-10-03 10:44 zYx.Tom 阅读(116) 评论(0)  编辑  收藏

相关文章:

  • php权限无需验证的控制器,控制器 · ThinkPHP5权限管理 · 看云
  • 两'参数粒子群matlab,SVM用粒子群优化参数
  • 数据在文本框中显示 php,在文本框中使用php和纯ajax从数据库加载数据
  • 数字信号处理matlab滤波器,数字信号处理matlab滤波器课程设计
  • matlab逆求贝塞尔函数变量值,MATLAB怎么求解有贝塞尔函数的问题,求高手帮帮忙,谢谢...
  • java 继承 默认作用域,Spring(三)——Bean的 继承关系、依赖关系、作用域
  • matlab中的newfis,(To be removed) Create new fuzzy inference system
  • php apache 301重定向,Apache下修改.htaccess实现301重定向方法汇总
  • php一对多关联,SpeedPHP/数据表一对多关联
  • import matlab.engine,请教python导入matlab engine失败的问题。
  • php封装pdo连接书记库,PHP封装的PDO数据库操作类实例分析
  • 推荐几本php的好书,新手,求几本php的好书!
  • 管理python库的工具,Python的包管理工具
  • php 对象注入,小记一次PHP对象注入
  • oracle export表结构,oracle下导入导出表结构
  • ----------
  • AHK 中 = 和 == 等比较运算符的用法
  • Java 最常见的 200+ 面试题:面试必备
  • JS实现简单的MVC模式开发小游戏
  • node入门
  • Swoft 源码剖析 - 代码自动更新机制
  • 阿里研究院入选中国企业智库系统影响力榜
  • 编写符合Python风格的对象
  • 创建一种深思熟虑的文化
  • 技术胖1-4季视频复习— (看视频笔记)
  • 看图轻松理解数据结构与算法系列(基于数组的栈)
  • 推荐一个React的管理后台框架
  • 在GitHub多个账号上使用不同的SSH的配置方法
  • 分布式关系型数据库服务 DRDS 支持显示的 Prepare 及逻辑库锁功能等多项能力 ...
  • ​Spring Boot 分片上传文件
  • # Apache SeaTunnel 究竟是什么?
  • #if和#ifdef区别
  • #pragma data_seg 共享数据区(转)
  • #大学#套接字
  • $redis-setphp_redis Set命令,php操作Redis Set函数介绍
  • (javascript)再说document.body.scrollTop的使用问题
  • (pojstep1.1.2)2654(直叙式模拟)
  • (rabbitmq的高级特性)消息可靠性
  • (TOJ2804)Even? Odd?
  • (附源码)计算机毕业设计SSM智慧停车系统
  • (附源码)小程序儿童艺术培训机构教育管理小程序 毕业设计 201740
  • (个人笔记质量不佳)SQL 左连接、右连接、内连接的区别
  • (排序详解之 堆排序)
  • (篇九)MySQL常用内置函数
  • (三分钟了解debug)SLAM研究方向-Debug总结
  • (生成器)yield与(迭代器)generator
  • (四)Controller接口控制器详解(三)
  • (五)MySQL的备份及恢复
  • (转载)从 Java 代码到 Java 堆
  • .NET BackgroundWorker
  • .NET Core 中的路径问题
  • .NET LINQ 通常分 Syntax Query 和Syntax Method
  • .NET 使用配置文件
  • .NET的数据绑定
  • .Net开发笔记(二十)创建一个需要授权的第三方组件