视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
实验9_Java输入输出流
2025-10-02 18:39:51 责编:小OO
文档
山西大学计算机与信息技术学院

实验报告

姓    名  学    号 专业班级计算机科学与技术 

课程名称                  Java实验实验日期2014/5/29
成    绩指导教师陈千批改日期
实验名称

      实验9  Java的输入输出流

●实验目的

1. 理解I/O流的概念,掌握其分类

2. 掌握文本文件读写、二进制文件读写

●实验内容 

1. 分别使用FileWriter 和 BufferedWriter 往文件中写入1万个随机数,比较用时的多少?(用时采用方法System.currentTimeMillis())求时间差;

使用:FileWriter

程序源代码

import java.io.*;

public class fileWriter {

    public static void main(String[] args) throws IOException {

        // TODO Auto-generated method stub

        long time = System.currentTimeMillis();// 当前时间

        FileWriter filewriter = new FileWriter("text");

        int number;

        for (int i = 0; i <= 10000; i++) {

            number = (int) Math.random() * 10000;

            filewriter.write(number + " ");

        }

        filewriter.close();

        time = System.currentTimeMillis() - time;// 时间差

        System.out.println("使用FileWriter用时为: " + time + "微秒");

    }

}

程序运行结果贴图

使用:BufferedWriter

程序源代码

import java.io.IOException;

public class BufferedWriter {

    public BufferedWriter(String string) {

        // TODO Auto-generated constructor stub

    }

    public static void main(String[] args) throws IOException {

        // TODO Auto-generated method stub

        long time = System.currentTimeMillis();// 当前时间

        BufferedWriter bufferedwriter = new BufferedWriter("bufferedwriter.txt");

        int number;

        for (int i = 0; i <= 10000; i++) {

            number = (int) Math.random() * 10000;

            bufferedwriter.write(number + " ");

        }

        bufferedwriter.close();

        time = System.currentTimeMillis() - time;// 时间差

        System.out.println("使用BufferedWriter用时为: " + time + "微秒");

    }

    private void write(String string) {

        // TODO Auto-generated method stub

    }

    private void close() {

        // TODO Auto-generated method stub

    }

}

程序运行结果贴图

2.课本P547,19.2 :编写一个文件,如果文件Exercise 19_2.dat 不存在,就创建一个名为Exercise 19_2.txt的文件。向这个文件追加新数据。使用二进制I/O将100个随机生成的整数写入这个文件中。

程序源代码

import java.io.DataOutputStream;

import java.io.FileOutputStream;

import java.io.IOException;

public class Exercise19_2 {

    public static void main(String[] args) throws IOException {

        DataOutputStream output = new DataOutputStream(new FileOutputStream(

                "Exercise19_2.dat", true));

        for (int i = 0; i < 100; i++)

            output.writeInt((int) (Math.random() * 100));

        output.close();

        System.out.println("Done");

    }

}

程序运行结果贴图

3.课本P547  19.3:(对二进制数据文件中的所有数据求和)假设已经使用DataOutputStream中的writeInt(int)创建一个名为Exercise 19_3.dat的二进制数据文件,文件包含数目不确定的整数,编写一个程序来计算这些整数的总和。

程序源代码

package test_9;

import java.io.DataInputStream;

import java.io.DataOutputStream;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.io.OutputStream;

public class Exercise19_3 {

    public static void main(String[] args) throws IOException {

        System.out.println("准备写入......");

        File file = new File("Exercise19_3.dat");// 当前目录下创建一个文件

        OutputStream write = new FileOutputStream(file);// 开始向新建文件内写入

        DataOutputStream dos = new DataOutputStream(write);

        // 使用过滤流将写入单位扩大为对象

        int[] data = { 1, 2, 3, 4, 5 };

        // 向文件中写五个数据

        for (int i = 0; i < data.length; i++) {

            dos.writeInt(data[i]);

        }

        dos.close();

        System.out.println("写入结束.....");

        System.out.println("开始读取......");

        InputStream input = new FileInputStream(file);// 输出流

        DataInputStream filter = new DataInputStream(input);// 过滤流

        int result = 0;

        while (true) {

            try {

                result += filter.readInt();

            } catch (Exception e) {

                break;

            }

        }

        System.out.println("所得的计算结果为: " + result);

        System.out.println("读取结束......");

    }

}

程序运行结果贴图

4.在文本文件bigbook.txt中包含有很长篇幅的英语短文,编写程序要求统计文件的所有短文中包含英文字母“A”的个数,并显示统计的时间。

程序源代码

import java.io.FileInputStream;

import java.io.IOException;

public class CountA {

    public static void main(String[] args) throws IOException {

        long time = System.currentTimeMillis();

        String filename = "J:\\\\bigbook.txt";

        FileInputStream f = new FileInputStream(filename);

        int count = 0;

        int c;

        while ((c = f.read()) != -1) {

            if (c == 'A') {

                count++;

            }

        }

        f.close();

        System.out.println("bigbook.txt中A的个数为:" + count);

        time = System.currentTimeMillis() - time;

        System.out.println("统计A的时间为: " + time);

    }

}

程序运行结果贴图

5.编写一个Java应用程序,给当前的类所在的文件ReadExample.java添加行号拷贝到另一个文件temp.text。

 需要拷贝的源文件的内容为:

  

程序源代码

import java.io.IOException;

public class BufferedWriter {

    public BufferedWriter(String string) {

        // TODO Auto-generated constructor stub

    }

    public static void main(String[] args) throws IOException {

        // TODO Auto-generated method stub

        long time = System.currentTimeMillis();// 当前时间

        BufferedWriter bufferedwriter = new BufferedWriter("bufferedwriter.txt");

        int number;

        for (int i = 0; i <= 10000; i++) {

            number = (int) Math.random() * 10000;

            bufferedwriter.write(number + " ");

        }

        bufferedwriter.close();

        time = System.currentTimeMillis() - time;// 时间差

        System.out.println("使用BufferedWriter用时为: " + time + "微秒");

    }

    private void write(String string) {

        // TODO Auto-generated method stub

    }

    private void close() {

        // TODO Auto-generated method stub

    }

}

程序运行结果贴图:

可以看到 在当前路径下,生成了一个拷贝文件temp.txt

文件内容为:

P547  19.5(将对象和数组存储在文件中)编写一个程序,向一个名为Exercise19_5.dat的文件中存储一个含5个int值1,2,3,4,5的数组,存储一个表示当前时间的Date对象,存储一个double值5.5

程序源代码

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.ObjectInputStream;

import java.io.ObjectOutputStream;

public class Exercise19_5 {

    public static void main(String[] args) throws IOException,

            ClassNotFoundException {

        // TODO Auto-generated method stub

        int[] number = { 1, 2, 3, 4, 5 };

        ObjectOutputStream output = new ObjectOutputStream(

                new FileOutputStream("Exercise19_5_dat"));

        output.writeObject(number);

        output.writeDouble(5.5);

        output.writeObject(new java.util.Date());

        output.close();

        ObjectInputStream input = new ObjectInputStream(new FileInputStream(

                "Exercise19_5_dat"));

        System.out.println("存储的数组为: ");

        int[] readNumber = (int[]) (input.readObject());

        for (int i = 0; i < readNumber.length; i++) {

            System.out.print(readNumber[i] + " ");

        }

        double num = input.readDouble();

        java.util.Date date = (java.util.Date) (input.readObject());

        System.out.println("\\ndouble型的数为: " + num + "\\n" + "日期为: " + date);

    }

}

程序运行结果贴图

P548 19.12(组合文件)编写一个工具程序,使它能够用下面的命令,将文件组合在一起构成一个新文件:

java Exercise19_12 SourceFile1…SourceFilen TargetFile

这个命令将 SourceFile1,…,SourceFilen合并为TargetFile。

程序源代码

import java.io.BufferedInputStream;

import java.io.BufferedOutputStream;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

public class Exercise19_12 {

    public static void main(String[] args) throws Exception {

        // Check usage

        if (args.length < 2) {

            System.out

                    .println("Usage: java Exercise19_12 SourceFile1 ... SoureFilen TargetFile");

            System.exit(0);

        }

        // The last file TargetFile is for output

        BufferedOutputStream output = new BufferedOutputStream(

                new FileOutputStream(new File(args[args.length - 1])));

        for (int i = 0; i < args.length - 1; i++) {

            BufferedInputStream input = new BufferedInputStream(

                    new FileInputStream(new File(args[i])));

            int value;

            while ((value = input.read()) != -1) {

                output.write(value);

            }

            input.close();

        }

        output.close();

    }

}

程序运行结果贴图

下载本文
显示全文
专题