Java(A)实验指导(4)-io流 下载本文

实验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