
实验报告
| 姓 名 | 学 号 | 专业班级 | 计算机科学与技术 | ||||
| 课程名称 | 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(); } } 程序运行结果贴图 | |||||||
