信息工程学院
《Java语言程序设计》实验报告
学院:信息学院班级:********* 姓名:pprp 学号:********** 成绩:
一、实习目标
(1)掌握输入输出流的用法:
文件字节流、文件字符流、缓冲流、对象流;
(2)掌握File对象的用法;
(3)掌握Serializable接口的使用。
二、实验过程
实验题1设计一个类FileMerge, 实现从一个目录(路径为“.\files\poem”,该
目录内有两个txt文件,见压缩包内文件)中依次读取每个文件的内容,并写入
到同一个新文件中,存储该文件为“.\files\李白诗集.txt”。
[提示] 使用File类的listFiles()方法可以得到目录下的文件对象数组。
[要求] 使用缓冲流读写
截图:
实验报告的内容与格式按任课教师的要求
书
关于书的成语关于读书的排比句社区图书漂流公约怎么写关于读书的小报汉书pdf
写。
代码:
说明:要求采用缓冲流写,而缓冲流是上层流,需要底层流的支持,所以采用的是FileWriter 和FileReader ;同时还用到了listFiles()函数,可以将该目录下所有文件都取出来。需要注意的一点,就是BufferedWriter 不能写到for 循环里边,这样就会打断流,导致第二次for 循环的时候会将之前的内容冲掉。
知识点:BufferedReader & BufferedWriter 的用法:
通常 Writer 将其输出立即发送到底层字符或字节流。除非要求提示输出,否则建议用 BufferedWriter 包装所有其 write() 操作可能开销很高的 Writer (如
FileWriters 和OutputStreamWriters)。
通常,Reader 所作的每个读取请求都会导致对底层字符或字节流进行相应的读取请求。因此,建议用BufferedReader 包装所有其read() 操作可能开销很高的Reader
1、BufferedWriter:方法摘要:
Void close();
Void flush();
Void newLine();
Void write(char[] buff, int off , int len);
Void write(int c);
Void write(String s,int off, int len);
2、BufferedReader:方法摘要:
Void close();
Int read();//单个字符
Int read(char[] buff,int off, int len);//将字符读入数组的某一部分
String readLine();
实验题 2写一个程序,统计纯文本文件“.\files\input.txt”(见压缩包内文件)的大写字母、小写字母个数,并将所有小写字母转换为大写字母,输出到“.\files\output.txt”。
[提示] 使用Character类的相关方法判断大写、小写字母以及转换大小写。
[要求] 使用文件字节流
截图:
温馨推荐
您可前往百度文库小程序
享受更优阅读体验
不去了
立即体验
代码:
说明:要求使用字节流文件,所以声明一个字节数组,用来读入存储,进行处理。
在这个实验中,要注意关闭流的使用,如果过早关闭流就会导致之后的数据不能进行传输,另外在使用的时候不能对字节数组处理以后直接用write函数将整个字节数组传输到output文件中,否则会产生一些列的空字符。
知识点:字节流的使用:
FileInputStream 从文件系统中的某个文件中获得输入字节。哪些文件可用取决于主机环境。
FileInputStream 用于读取诸如图像数据之类的原始字节流。要读取字符流,请考虑使用FileReader
FileOutputStream 用于写入诸如图像数据之类的原始字节的流。要写入字符流,请考虑使用FileWriter
1.FileInputStream:方法摘要:
Int read();// 一个字节
Int read(byte[] b);//将b.length个字节读入
Int read(byte[] b ,int off, int len);//从off开始的len个字节
Void close();
2.FileOutputStream: 方法摘要:
Int write();// 一个字节
Int write(byte[] b);//将b.length个字节输出
Int write(byte[] b ,int off, int len);//从off开始的len个字节
Void close();
实验题 3实现目录的复制
完成实验题1 & 2之后,“.\files”目录的内容:
+ files
-input.txt
-output.txt
+ poem
-将进酒.txt
-五古·咏苎萝山.txt
-李白诗集.txt
其中“+”
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
示目录,“-”表示文件。
将“.\files”整个目录拷贝一份,命名为“.\filescopy”。使得两个目录的内容完全相同。
[提示] 设计一个递归形式的方法copy()进行拷贝。
截图:
代码:
说明:这个递归函数的设计最初感到很迷茫,因为没有想到用带有两个参数的File构造函数,只用一个比较难处理。如果用两个的话就可以解决文件的命名问题。分别从files和copyfiles进行复制就好了。需要先判断是不是目录,如果是目录,则在函数中需要用到listFile,进行下一步的递归。如果是文件那就直接读入并进行复制。
知识点:File文件构造函数:
File 类的实例是不可变的;也就是说,一旦创建,File 对象表示的抽象路径名将永不改变。
File构造函数:
1、File(File parent, String child)
2、File(String pathname)
3、File(String parent, String child)
实验题 4 对象输入与输出流
现有一个Student类:
程序实现:将Student类的2个实例写到文件中student.txt中,并从student.txt 中读取这个实例并输出,运行结果如图所示:
截图:
代码:
说明:由于ObjectInputStream和ObjectOutputStream是上层流,所以需要用到底层流的支持。这次选择FileInputStream作为底层流。
知识点:
writeObject 方法用于将对象写入流中。所有对象(包括String 和数组)都可以通过writeObject 写入。可将多个对象或基元写入流中。必须使用与写入对象时相同的类型和顺序从相应ObjectInputstream 中读回对象。
void write(byte[] buf) //写入一个byte 数组。
void write(byte[] buf, int off, int len)//写入字节的子数组。
void write(int val) //写入一个字节。
void writeObject(Object obj) //将指定的对象写入ObjectOutputStream。
Object readObject() //从ObjectInputStream 读取对象。
void close();
三、疑问和建议
没有疑问和建议。