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

实验9 Java输入输出流

山西大学计算机与信息技术学院实验报告姓名学号专业班级课程名称 Java实验实验日期2013-12-4 成绩指导教师批改日期实验名称实验9 Java的输入输出流●实验目的1. 理解I/O流的概念,掌握其分类2. 掌握文本文件读写、二进制文件读写●实验内容1. 分别使用FileWriter 和BufferedWriter 往文件中写入1万个随机数,比较用时的多少?(用时采用方法System.currentTimeMillis())求时间差;使用:FileWriter程序源代码package a;import java.io.*;public class Filewriter {public Filewriter(String string){}public static void main(String[] args)throws IOException {long time =System.currentTimeMillis();Filewriter filewriter=new Filewriter("text");int num;for(int i=0;i<=10000;i++){num=(int)Math.random()*10000;filewriter.write(num+" ");}filewriter.close();time=System.currentTimeMillis()-time;System.out.println("使用Filewriter所用时间:"+time+"um");}private void write(String string){}private void close(){}}程序运行结果贴图使用:BufferedWriter程序源代码package a;public class Bufferwriter {public Bufferwriter(String string){}public static void main(String[] args) {long time=System.currentTimeMillis();Bufferwriter a=new Bufferwriter("a.txt");int num;for(int i=0;i<=10000;i++){num=(int)Math.random()*10000;a.write(num+" ");}a.close();time=System.currentTimeMillis()-time;System.out.println("使用Bufferwriter所用时间:"+time+"um"); }private void write(String string){}private void close(){}}程序运行结果贴图2.课本P547,19.2 :编写一个文件,如果文件Exercise 19_2.dat 不存在,就创建一个名为Exercise 19_2.txt的文件。

向这个文件追加新数据。

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

程序源代码import java.io.*;public class Exe19_2 {public static void main(String[] args) throws IOException {DataOutputStream output=new DataOutputStream(new FileOutputStream("Exe19_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 a;import java.io.*;public class Exe19_3 {public static void main(String[] args) throws IOException {System.out.println("准备写入。

");File file=new File("Exe19_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”的个数,并显示统计的时间。

程序源代码package a;import java.io.*;public class count {public static void main(String[] args) throws IOException{long time=System.currentTimeMillis();String filename="G:\\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("时间为:"+time);}}程序运行结果贴图5.编写一个Java应用程序,给当前的类所在的文件ReadExample.java添加行号拷贝到另一个文件temp.text。

先在G:存入要拷贝的文件Welcome.txt。

程序源代码package c;import java.io.*;public class ReadExample {public static void main(String[] args) throws IOException{ File file=new File("G:","Welcome.txt");File tempFile=new File("G:","temp.txt");FileReader inone=new FileReader(file);BufferedReader intwo=new BufferedReader(inone);FileWriter tofile=new FileWriter(tempFile);BufferedWriter out=new BufferedWriter(tofile);int i=0;String s=intwo.readLine();while(s!=null){i++;out.write(i+" "+s);out.newLine();s=intwo.readLine();}inone.close();intwo.close();out.flush();//清空输出流out.close();tofile.close();}}程序运行结果贴图执行完之后,在当前目录下产生一个temp.txt文件。

:打开后:P547 19.5(将对象和数组存储在文件中)编写一个程序,向一个名为Exercise19_5.dat的文件中存储一个含5个int值1,2,3,4,5的数组,存储一个表示当前时间的Date对象,存储一个double值5.5程序源代码package c;import java.io.*;public class Exe19_5 {public static void main(String[] args) throws IOException,ClassNotFoundException{int[] number={1,2,3,4,5};ObjectOutputStream output=new ObjectOutputStream(new FileOutputStream("Exe19_5.dat"));output.writeObject(number);output.writeDouble(5.5);output.writeObject(new java.util.Date());output.close();ObjectInputStream input=new ObjectInputStream(new FileInputStream("Exe19_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。

相关主题