实验4:输入输出流
一、实验目的
1. 2. 3. 4. 5. 6. 7.
理解I/O流的概念,掌握其分类,掌握Java I/O基本原理。 掌握对硬盘上的文件和目录进行操作的基本方法。
掌握FileInputStream、FileOutputStream类的基本使用方法。 掌握FileReader类 、FileWriter类的使用。
掌握BufferedWriter类 、BufferedWriter类的使用。 掌握RandomAccessFile类的使用。
掌握对象序列化的方法及ObjectInputStream、ObjectOutputStream类的基本使用方法。
二、实验要求
本次实验要求以Eclipse为开发平台。
三、实验内容与步骤
1.编写一个Java Application程序,实现如下的设计功能:运行该程序可以列出当前目录下的所有文件。
2.编写一个Java Application程序(文件名为CopyFile.java),要求通过字节流从该文件中读取数据并写入到“temp.txt”文件中去,实现该文件的复制。
3.编写一个程序(文件名为ReadExample.java),将程序文件本身的内容每行开头添加上行号拷贝到另一个文件tempfile.txt中。
4.编写一个程序,利用缓冲流实现接收键盘输入的数据,并写入到指定文件中(如当前目录下的tt.txt文件)的功能,要求键盘输入”exit”时结束。
(提示:BufferedReader br=new BufferedReader(new InputStreamReader(System.in));)
5.下面的程序使用随机流进行文件的保存和读取,请按如下的程序模板中的要求,将【代码】替换为Java程序代码,以完成该程序,使得程序在控制台的输出结果如下:
程序清单:
import java.io.*;
1
public class testRandom2 {
public static void main(String args[]) { try {
RandomAccessFile rf = new RandomAccessFile(\ for (int i = 0; i < 10; i++) { rf.writeInt(i);
rf.writeDouble(i * 1.414); }
rf.close();
rf = new RandomAccessFile(\ rf.seek (【代码1】); rf.writeInt(47);
rf.writeDouble(47.00021); rf.close();
rf = new RandomAccessFile(\ for (int i = 0; i < 10; i++) { ;
System.out.println(\ +【代码2】); }
rf.【代码3】;
} catch (IOException e) {
System.out.println(e.toString()); } } }
6. 下面的程序使用对象的序列化及对象流进行对象的保存和读取,请按如下的程序模板中的要求,将【代码】替换为Java程序代码,以完成该程序。 程序清单:
import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException;
import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.Serializable;
public class SerializableDemo {
public static void main(String args[]) throws Exception {
student stu = new student(20131064, \张三\西华大学\ FileOutputStream fout = new FileOutputStream(\ ObjectOutputStream oout = new 【代码1】; // 输出对象
oout.writeObject(stu);
2
oout.close(); stu = null;
FileInputStream fin = new 【代码2】; ObjectInputStream oin = new 【代码3】; // 读入对象
stu = 【代码4】; oin.close();
System.out.println(\学生信息:\ System.out.println(\: \ System.out.println(\: \ System.out.println(\: \
System.out.println(\:\ } }
class student implements Serializable { int id;
String name; int age;
String department;
public student(int id, String name, int age, String department) { this.id = id; this.name = name; this.age = age;
this.department = department; } }
7. 下面的程序以字节为单位进行文件的读写操作,请阅读并分析该程序,上机运行查看效果,然后修改程序,使其以字符流方式进行文件的读写操作。 程序清单:
import java.io.*; import java.awt.*;
import java.awt.event.*; import javax.swing.*;
public class readerbyte extends JFrame implements ActionListener {
JButton b1, b2, b3; JTextField jt1; JTextArea jt2;
readerbyte() {
setTitle(\演示\ getContentPane().setLayout(new FlowLayout());
3