当前位置:文档之家› 实验9 Java输入输出流

实验9 Java输入输出流

▇▆大学计算机与信息技术学院实验报告姓名□□□学号▅▅▅▅专业班级▅▅课程名称 Java实验实验日期♣♣♣♣成绩指导教师▇▇██批改日期实验名称实验9 Java的输入输出流●实验目的1. 理解I/O流的概念,掌握其分类2. 掌握文本文件读写、二进制文件读写●实验内容1. 分别使用FileWriter 和BufferedWriter 往文件中写入1万个随机数,比较用时的多少?(用时采用方法System.currentTimeMillis())求时间差;使用:FileWriter程序源代码import java.io.*;public class TestFileWriter {public static void main(String []args) throws IOException{File f = new File("C:/java/tem.txt");if (f.exists()){System.out.printf("文件\"C:/java/tem.txt\"已存在");System.exit(0);}FileWriter fileWriter = new FileWriter(f);long time = System.currentTimeMillis();for(int i=0;i<10000;i++)fileWriter.write((int)(Math.random()*101));fileWriter.close();time = System.currentTimeMillis() - time;System.out.printf("使用FileWriter耗时:"+time+"毫秒");}}程序运行结果贴图使用:BufferedWriter程序源代码import java.io.*;public class TestBufferedWriter {public static void main(String []args) throws IOException{File f = new File("C:/java/tem2.txt");FileWriter fileWriter = new FileWriter(f,true);BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);long time = System.currentTimeMillis();for(int i=0;i<10000;i++)bufferedWriter.write((int)(Math.random()*101));bufferedWriter.close();time = System.currentTimeMillis() - time;System.out.printf("使用BufferedWriter耗时:"+time+"毫秒");}}程序运行结果贴图2.课本P547,19.2 :编写一个文件,如果文件Exercise 19_2.dat 不存在,就创建一个名为Exercise 19_2.txt的文件。

向这个文件追加新数据。

使用二进制I/O将100个随机生成的整数写入这个文件中。

程序源代码import java.io.*;public class Test19_2 {public static void main(String []args) throws IOException{File f0 = new File("C:/java/Exercise19_2.dat");if(!f0.exists()){File f = new File("C:/java/Exercise19_2.txt");DataOutputStream out = new DataOutputStream(new FileOutputStream(f,true));for(int i=0;i<100;i++) out.writeInt((int)(Math.random()*101)); out.close(); } System.out.printf("追加数据完成!");}}程序运行结果贴图3.课本P547 19.3:(对二进制数据文件中的所有数据求和)假设已经使用DataOutputStream中的writeInt(int)创建一个名为Exercise 19_3.dat的二进制数据文件,文件包含数目不确定的整数,编写一个程序来计算这些整数的总和。

程序源代码import java.io.*;public class SumFileData {public static void main(String []args) throws IOException{File f = new File("C:/java/sumData.dat");DataOutputStream output = new DataOutputStream(new FileOutputStream(f));int num = (int)(1+Math.random()*1000);for(int i=0;i<num;i++)output.writeInt((int)(1+Math.random()*1000));output.close();System.out.println("已经写入"+num+"个1~1000的整数");int sum = 0;DataInputStream input = new DataInputStream(new FileInputStream(f));try{ while(true){sum = sum + input.readInt();}}catch(EOFException ex){System.out.println("数据已读取完!");System.out.println(num+"个整数和为:"+sum);}}}程序运行结果贴图4.在文本文件bigbook.txt中包含有很长篇幅的英语短文,编写程序要求统计文件的所有短文中包含英文字母“A”的个数,并显示统计的时间。

程序源代码import java.io.*;public class coutA {public static void main(String []args) throws IOException{File f = new File("C:/java/bigbook.txt");FileInputStream input = new FileInputStream(f);int cout = 0;int c;long t = System.currentTimeMillis();while((c=input.read())!=-1){if(c=='A') cout++; }System.out.println("数据已读取完毕!");System.out.println("字母‘A’的个数为"+cout);System.out.println("统计时间为"+(System.currentTimeMillis() - t)+"毫秒");}}程序运行结果贴图5.编写一个Java应用程序,给当前的类所在的文件ReadExample.java添加行号拷贝到另一个文件temp.text。

程序源代码import java.util.*;import java.io.*;public class ReadExample{public static void main(String []args) throws FileNotFoundException{File f = new File("ReadExample.java");File f0 = new File("Temp.txt");Scanner in = new Scanner(f);PrintWriter out = new PrintWriter(f0);int i = 0;while(in.hasNext()){ out.println(i+"\t"+in.nextLine()); i++; }in.close();out.close();System.out.println("拷贝完毕!");}}程序运行结果贴图P547 19.5(将对象和数组存储在文件中)编写一个程序,向一个名为Exercise19_5.dat的文件中存储一个含5个int值1,2,3,4,5的数组,存储一个表示当前时间的Date对象,存储一个double值5.5程序源代码import java.io.*;import java.util.*;public class ObjectSave {public static void main(String []args) throws IOException, ClassNotFoundException{ File f = new File("C:/java/Exercise19_5.dat");int[]array = {1,2,3,4,5};double d = 5.5;ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(f));out.writeObject(array);out.writeObject(new Date());out.writeDouble(d);out.close();System.out.println("存储成功!");ObjectInputStream in = new ObjectInputStream(new FileInputStream(f));int[]a = (int[])in.readObject();Date dat = (Date) in.readObject();System.out.println("存储的数组为:");for(int i=0;i<a.length;i++)System.out.print(a[i]+"\t");System.out.println("\n存储的时间为:"+dat);System.out.println("存储的Double数据为:"+in.readDouble());in.close();}}程序运行结果贴图P548 19.12(组合文件)编写一个工具程序,使它能够用下面的命令,将文件组合在一起构成一个新文件:java Exercise19_12 SourceFile1…SourceFilen TargetFile这个命令将 SourceFile1,…,SourceFilen合并为TargetFile。

相关主题