实验9 Java输入输出流.doc_第1页
实验9 Java输入输出流.doc_第2页
实验9 Java输入输出流.doc_第3页
实验9 Java输入输出流.doc_第4页
实验9 Java输入输出流.doc_第5页
免费预览已结束,剩余9页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

山西大学计算机与信息技术学院实验报告姓 名 颜凯丽 学 号2010242100专业班级软件工程一班课程名称 Java实验实验日期2012/12/28成 绩指导教师 批改日期实验名称 实验9 Java的输入输出流l 实验目的1. 理解I/O流的概念,掌握其分类2. 掌握文本文件读写、二进制文件读写l 实验内容 1. 分别使用FileWriter 和 BufferedWriter 往文件中写入1万个随机数,比较用时的多少?(用时采用方法System.currentTimeMillis())求时间差;使用:FileWriter程序源代码import java.io.FileWriter;import java.io.IOException;import java.util.Random;public class WriterSample public static void main(String args) throws IOException long start = System.currentTimeMillis();FileWriter f = new FileWriter(f.dat);Random random=new Random();for (int i = 0; i 10000; i+) f.write(int) random.nextDouble();long end = System.currentTimeMillis();f.close();System.out.println(end + ms - + start + ms = + (end - start)+ ms + );程序运行结果贴图使用:BufferedWriter程序源代码import java.io.BufferedWriter;import java.io.FileWriter;import java.io.IOException;import java.util.Random;public class WriteSample2 public static void main(String args) throws IOException long start = System.currentTimeMillis();BufferedWriter f2 = new BufferedWriter(new FileWriter(f2.dat);Random random=new Random();for (int i = 0; i 10000; i+) f2.write(int) random.nextDouble();f2.flush();long end = System.currentTimeMillis();f2.close();System.out.println(end + ms - + start + ms = + (end - start)+ ms + );程序运行结果贴图2. 课本P547,19.2 :编写一个文件,如果文件Exercise 19_2.dat 不存在,就创建一个名为Exercise 19_2.txt的文件。向这个文件追加新数据。使用二进制I/O将100个随机生成的整数写入这个文件中。程序源代码import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.PrintWriter;import java.util.Random;public class Append1 public static void main(String args) throws IOException File file = new File(Exercise19_2.dat);Random random = new Random(1000000000);if (!file.exists() file = new File(Exercise19_2.txt);PrintWriter f = new PrintWriter(new FileOutputStream(file, true);for (int i = 0; i 100; i+) f.printf(random.nextDouble() * 1000000000 + );f.close();程序运行结果贴图文件:Exercise19_2.txt中生成的一百个随机数:3. 课本P547 19.3:(对二进制数据文件中的所有数据求和)假设已经使用DataOutputStream中的writeInt(int)创建一个名为Exercise 19_3.dat的二进制数据文件,文件包含数目不确定的整数,编写一个程序来计算这些整数的总和。程序源代码import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.EOFException;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.util.Random;public class SumAppend public static void main(String args) throws IOException File file = new File(Exercise19_3.dat);DataOutputStream output = new DataOutputStream(new FileOutputStream(file);Random random = new Random();int num = random.nextInt(100);int sum = 0;System.out.println(共有 + num + 个数);for (int i = 0; i num; i+) int r = random.nextInt(100);output.writeInt(r);sum += r;System.out.println(总和为: + sum + n数据如下:);output.close();DataInputStream input = new DataInputStream(new FileInputStream(file);try while (true) System.out.println(input.readInt(); catch (EOFException ex) System.out.println(All data are read.);程序运行结果贴图4. 在文本文件bigbook.txt中包含有很长篇幅的英语短文,编写程序要求统计文件的所有短文中包含英文字母“A”的个数,并显示统计的时间。程序源代码import java.io.File;import java.io.FileNotFoundException;import java.util.Scanner;public class Statics public static void main(String args) throws FileNotFoundException long sum=0;long begin = System.currentTimeMillis();Scanner input = new Scanner (new File(A.txt);while(input.hasNext()String temp = new String(input.next();sum+=count(temp);long finish = System.currentTimeMillis();System.out.println(Letter A appears + sum + times in this artical.);System.out.println(this statistic uses + (finish-begin) + ms.);public static long count(String t)long re=0;for(int i=0;it.length();i+)if (t.charAt(i)=A)re+;return re;程序运行结果贴图A.txt中的内容贴图:5.编写一个Java应用程序,给当前的类所在的文件ReadExample.java添加行号拷贝到另一个文件temp.text。程序源代码import java.io.File;import java.io.FileNotFoundException;import java.io.PrintWriter;import java.util.Scanner;public class Append3 public static void main(String args) throws FileNotFoundException File file = new File(D:eclipsejavasrcAppend3.java);File target = new File(temp.txt);Scanner input = new Scanner (file);PrintWriter output = new PrintWriter(target);int i=1;while(input.hasNextLine()output.write(i+ );output.write(input.nextLine();output.println();i+;output.close();input.close();程序运行结果贴图Temp.txt中的内容贴图:P547 19.5(将对象和数组存储在文件中)编写一个程序,向一个名为Exercise19_5.dat的文件中存储一个含5个int值1,2,3,4,5的数组,存储一个表示当前时间的Date对象,存储一个double值5.5程序源代码import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.ObjectOutputStream;public class Append4 public static void main(String args) throws IOException File file = new File (Exercise19_5.dat);int array = 1,2,3,4,5;ObjectOutputStream output = new ObjectOutputStream(new FileOutputStream(file);output.writeObject(array);output.writeObject(new java.util.Date();output.writeDouble(5.5);output.close();程序运行结果贴图Exercise19_5.dat中的内容贴图:P548 19.12(组合文件)编写一个工具程序,使它能够用下面的命令,将文件组合在一起构成一个新文件:java Exercise19_12 SourceFile1SourceFilen TargetFile这个命令将 SourceFile1,SourceFilen合并为TargetFile。程序源代码import java.io.*;public class ComFile public static void main(String args) if(args.length!=3) System.out.println(ComFile c1 c2 com); System.exit(0); File f1 =new File(args0); File f2 =new File(args1); if(!f1.exists() System.out.println(c1+args0+不存在!); System.exit(0); if(!f2.exists() System.out.println(c2+args1+不存在!); System.exit(0); File f3 = new File(args2); try FileInputStream in1 =new FileInputStream(f1);FileInputStream in2 =new FileInputStream(f2);FileOutputStream out =new FileOutputStream(f3,true);int a;while(a=in1.read()!=-1)out.write(a);int b;while(b=in2.read()!=-1)out.write(b);in1.close();in2.close();out.close(); catch (FileNotFoundException e) e.printStackTrace(); catch (IOException e) e.printStackTrace();程序运行结果贴图课后作业P544 19.1 19.1619.1答:文本文件将数据解释成字符序列,需要自动进行编码和解码t。二进制文件中的数据是原始的二进制数值,由位序列构成。文本编辑器可以查看文本文件,但是不能查看二进制文件。19.2在java中可以通过使用Java I/O类来创建对象,再使用对象中定义的方法来读写数据。数据流包含输入流和输出流,输入流即从文件中读取数据流,输出流即将数据流写入文件19.3文本文件是在写入一个字符时,将统一码转化为文件指定的编码,而在读取字符时,将编码转化为统一码的一种文件。它将数据解释成字符序列,需要自动进行编码和解码,其文件的扩展名为.txt。二进制文件是在写入一个数值时,将内存中的确切值复制到文件中,实际也显示的也是这个值,而在读取一个字节时,就会输入流中读取一个字节的数值。它将数据原始的二进制数值,由位序列构成,java虚拟机可以阅读此类文件,文件扩展名为.dat。19.4字符在内存中表示为统一码的形式,在文本文件中表示为文件指定的编码格式,即字符序列。19.50x0041 0x0042 0x004319.6ASCII码文本文件中写入字符串100,它在文件中存储的值为0x31 0x30 0x30使用二进制I/O中写入字节型100,它在文件中存储的值0x6419.7在java中使用统一码,而在Windows文本文件中默认使用ASCII码19.8在java I/O类中,几乎所有的方法和构造方法都会抛出异常,因为经常有不期望的错误发生.19.9不关闭数据流可能会输出文件中造成数据受损,或导致其他的程序设计错误,数据无法正常存储.关闭数据流确保数据正常写入文件,同时也释放数据流所占用的资源.19.10Read()方法从输入流读取数据的下一个字节,返回的字节的值是一个在0到255之间的整数值,如果因为到达这个流的末尾而无字节可用,则返回值是-1.它返回的是读取的字节数。 InputStream中的抽象方法有read(),available(),close(),skip(),mark(),Reset() OutputStream中的抽象方法有write(),close(),flush()。InputStream()中的抽象方法是read(),OutputSt

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论