没有合适的资源?快使用搜索试试~ 我知道了~
JAVA流式输入输出与文件处理.docx
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 51 浏览量
2023-02-28
20:49:58
上传
评论
收藏 62KB DOCX 举报
温馨提示
试读
13页
。
资源推荐
资源详情
资源评论
流式输入输出与文件处理
实验目的
(1) 掌握字节流和字符流的特点和处理差异;
(2) 掌握过滤流的使用;
(3) 掌握 File类的使用;
(4) 掌握随机文件的使用。
(5) 掌握对象系列化的概念以及访问文件时对象读写方法。
知识要点
1 面向字节的输入/输出流
(1)类 InputStream是面向字节的输入流的根。其主要方法见表13-1。
表 13-1 类 InputStream的方法
方法
功能
int read()
读一个字节
int read(byte b[])
int read(byte[] b, int off,
int len)
读多个字节到字节数组
读指定长度的数据到字节数组,数据从字节数组
的 off处开始存放
输入指针跳过 n 个字节
在当前指针位置处做一标记
将位置指针返回标记处
关闭流
Void close()
(2) 数据过滤流 DataInputStream
该流实现 DataInput接口,主要方法有:readByte(),readBoolean()、
readShort()、readChar()、readInt() 、readLong()、readFloat()、readDouble()、
readUTF()等。
(3)类 OutputStream是面向字节输出流的根,其主要方法有:
void write(int b) :将参数 b 的低字节写入输出流
void write(byte b[]) :将字节数组全部写入输出流
void write(byte b[],int offset, int len):将字节数组中从 b[offset]开始
处的 len个字节写入至输出流。
(4)类 DataOutputStream实现各种类型数据的输出处理,它实现了 DataOutput接
口,主要方法有:writeByte(int)、writeBytes(String)、writeBoolean(boolean)、
writeChars(String)、writeInt(int) 、writeLong()、writeFloat(float)、
writeDouble(double)、writeUTF(String)等。
2 面向字符的输入与输出流
类 Reader是面向字符的输入流的根,其提供的方法与InputStream类似,只是将基于
Byte的参数改为基于 Char。
类 Writer是面向字符的输出流类的根,其提供的方法与OutputStream类似,只是将
基于 Byte的参数改为基于 Char。
类 InputStreamReader是一个特殊的流,用来将面向字节的数据流包装转换为面向字
符的流。常用于从键盘获取输入数据。例如,从键盘输入一行字符串,可以用
BufferedReader的 readLine()方法,但在此前必须使用 InputStreamReader将字节流转化
为字符流。
BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
String x=in.readLine()
3 文件的顺序读写
(1)面向字节的文件访问
以二进制文件作为数据源。FileInputStream类和 FileOutputStream类分别用于
文件的读、写访问。
利用 InputStream和 OutputStream的方法可实现文件的读写操作。
可用 DataInputStream对 FileInputStream流进行过滤;用 DataOuputStream对
FileOutputStream流进行过滤,以实现特定数据类型数据的读写。
(2)面向字符的文件访问
以字符文件作为数据源。包括:FileReader 类和 FileWriter 类分别用于字符文
件的读、写访问。
基于字符流的数据读写方法与基于字节流的类似,只是将读写的单位由字节改为
字符,方法中的字节数组参数相应改为字符数组。例如:
int read(char b[])表示从文件读数据填满数组,返回读到的字符数。
可 用 BufferedReader 对 FileReader 流 进 行 过 滤 ; 用 BufferedWriter 对
FileWriter流进行过滤,其中包含 newLine()方法可写入一个换行。
4 File类
借助 File对象,可以获取文件和相关目录的属性信息。其主要方法见表13-2。
表 13-2 File类的主要方法
返回文件名
获取文件所在目录的父目录
文件是否存在
boolean canWrite()
boolean canRead()
文件是否可写
文件是否可读
是否为一个正确定义的文件
是否为目录
Void delete()
删除文件
boolean equals(File f)
5 随机文件
比较两个文件或目录是否相等
创建随机访问文件对象时要指定文件访问的“rw”参数,也就是它可以对同一打开文
件进行读写两种访问。RandomAccessFile类实现了 DataInput和 DataOutput接口,为支
持流的随机读写,RandomAccessFile类还添加定义了如下方法:
long getFilePointer():返回当前指针;
void seek(long pos):将文件指针定位到一个绝对地址;
long length():返回文件的长度
注意:地址是相对于文件头的偏移量。地址 0 表示文件的开头。
6 对象序列化
(1)对象输入流 ObjectInputStream和对象输出流 ObjectOutputStream将 Java流系
统扩充到能输入输出对象,它们提供的 writeObject()和 readObject()方法实现了对象
的串行化(Serialized)和反串行化(Deserialized)。
(2)用对象输入流的 readObject()方法必须捕捉 ClassNotFoundException异常。
(3)为了实现用户自定义对象的串行化,相应的类必须实现 Serializable 接口,否
则,不能以对象形式正确写入文件。Serializable接口是一个不含任何具体内容的接口。
3 样例程序
样例 1: 编写一个程序实现任意文件的拷贝功能,源文件和目的文件名由命令行参数
提供。
【参考程序】
import java.io.*;
public class CopyFile {
public static void main(String args[]) {
if ( args.length<2) {
System.out.println("usage: java CopyFile sourcefile
targetfile");
System.exit(0);
}
剩余12页未读,继续阅读
资源评论
不吃鸳鸯锅
- 粉丝: 8258
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功