实验十四输入输出流.doc_第1页
实验十四输入输出流.doc_第2页
实验十四输入输出流.doc_第3页
实验十四输入输出流.doc_第4页
实验十四输入输出流.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

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

文档简介

实验十四 输入输出流课程名称: 面向对象程序设计实验 项目名称: 实验十四 输入输出流 学生姓名: 专业: 学号: 实验地点: 实验日期: 年 月 日【实验目的】1、掌握文件类应用2、文件字节流/字符流类应用3、数据流类应用4、对象流类应用【实验内容】【概述】在Java语言中,所有的输入输出操作都采用流式处理机制。所谓流是指具有数据源和数据目标的字节序列的抽象表示。可以将数据写入流中,也可以从流中读取数据,实际上流中存放着以字节序列形式表示的准备流入程序或流出程序的数据。Java程序使用流机制处理输入输出的主要好处是可以使程序中有关输入输出的代码与设备无关,这样既可以免去了解每一种设备的细节而带来的烦恼,也可以使得程序适应各种设备的输入输出。Java的输入输出流库File 支持文件或目录操作的类;RandomAccessFile 支持随机存取文件类OutputStream 字节流输出操作的抽象类InputStream 字节流输入操作的抽象类Writer 字符流输出操作的抽象类Reader 字符流输入操作的抽象类Java I / O类的设计是一个很好的运用继承机制的例子,其中常见的操作定义在父类,子类提供更具体化的输入输出操作业务。下图列出了具体的一些执行二进制输入输出类的继承结构图,可见InputStream和OutputStream分别是根类。InputStream和OutputStream的所有方法,如下: int read() 从输入流中读一个字节,形成一个0255之间的整数返回(是一个抽象方法)。int read(byte b) 读多个字节到数组中,并返回读取得字节数。int read(byte b, int off, int len)len指定从输入流中读取的最大字节数,写入数组b中从索引off开始的位置,并返回读取得字节数。对于这三个方法,若返回1,表明流结束。close():关闭流write(int b) 将一个整数输出到流中(只输出低位字节,抽象)write(byte b) 将字节数组中的数据输出到流中write(byte b, int off, int len) 将字节数组b中从off指定的位置开始,写len个字节到输出流中close():关闭流在Java语言中,支持输入输出流的所有类被放置在java.io包中,其中主要包含二进制流和字符流。利用文件组织和存储数据是一种常用的方式。在Java语言中,根据对文件的存取方式不同,提供了两个类用来描述文件及实现文件的各种操作。一个类是File类,用来支持顺序文件的操作;另一个类是RandomAccessFile类,用来支持随机文件的操作。【I/0中的异常】IOException FileNotFoundException【I/0异常的处理方式】 throws的处理方式 try catch的处理方式 【动手练一练】1、分析与运行下面程序,程序源代码如下:import java.io.*;public class Test1 public static void main(String args) byte buf=new byte1000; try System.out.println(); System.out.println(请从键盘输入一行字符,按回车键结束!); System.out.println(); int rd=System.in.read(buf); FileOutputStream fos=new FileOutputStream(input.txt); fos.write(buf,0,rd); catch(IOException e) System.out.println(Output Error!); 问题:(1)请指出方法read( byte buffer)的返回值的含义。 所输入的字符串个数。(2) 运行并编译程序,叙述结果。在所建JAVA项目文件夹下面出现一个input.txt文件,此txt文件里存放的内容是我在运行和编译程序时所打的字符串。2如果文件Test.dat 不存在,请说明以下代码编译运行的结果:import java.io.*;public class Test 2 public static void main(String args) try RandomAccessFile raf =new RandomAccessFile(test.dat, r);int i = raf.readInt();catch (IOException ex) System.out.println(IO exception);(1)执行上述程序 运行结果:输入输出异常因为Test.dat文件不存在。3、使用随机文件类RandomAccessFile的应用程序,分析并运行下面程序。import java.io.*;public class Test3 public static void main(String args) try RandomAccessFile rf=new RandomAccessFile(test.dat, rw); for(int i = 0; i 10; i+) rf.writeDouble(i*Math.PI); rf.close(); rf = new RandomAccessFile(test.dat, rw); rf.seek(5*8); rf.writeDouble(361.0); rf.close(); rf = new RandomAccessFile(test.dat, r); for(int i = 0; i 10; i+) System.out.println(Value + i + : + rf.readDouble(); rf.close(); catch(IOException e) System.out.println(e.toString(); 问题:(1)请指出RandomAccessFile流与其他输入输出流的区别其他输入输出流都是顺序访问流,即读写数据的操作都是按顺序执行而无法回溯访问。RandomAccessFile流支持将同一文件作为数据源和输出目的地,即同时是输入流和输出流。RandomAccessFile流可以对同一文件读写数据,而不需要分别创建不同的输入流和输出流。(2) 运行并编译程序,叙述结果4、分析下面程序:import java.io.*;public class Test4 public void writeMethod()throws IOException BufferedReader stdn =new BufferedReader(new InputStreamReader(System.in); System.out.print(请输入一行文字:); System.out.println(stdn.readLine(); String s,s1=new String(hello java); StringReader in1 = new StringReader(s1); int c; while(c = in1.read() != -1) System.out.print(char)c); try BufferedReader in2 = new BufferedReader(new StringReader(s1); PrintWriter out1 = new PrintWriter(new BufferedWriter(new FileWriter(output.out); while(s = in2.readLine() != null ) out1.println(s); out1.close(); catch(EOFException e) System.err.println(Error); public static void main(String arg) throws IOException Ex10_03 ec=new Ex10_03(); ec.writeMethod(); 问题:(1)请指出InputStreamReader类的功能可以将字节输入流转换成字符输入流。(2) 运行并编译程序,叙述结果不存在Ex10_03的公共类,无法进行新的对象操作。5编译下面的程序,并输出结果:import java.io.*;public class Test2public static void main(String args) throws IOException ObjectOutputStream output = new ObjectOutputStream(new FileOutputStream(object.dat);output.writeObject(new A();class A implements Serializable B b = new B();class B (1) 输出结果: (2) 将上述程序修改为:import java.io.*;public class Test2public static void main(String args) throws ClassNotFoundException,IOExceptionFileOutputStream fout=new FileOutputStream(d:/test/object.dat);FileInputStream fin=new FileInputStream(d:/test/object.dat); ObjectOutputStream output = new ObjectOutputStream(fout); output.writeObject(new A(); ObjectInputStream input= new ObjectInputStream(fin); A aa=(A)(input.readObject(); System.out.println(aa.bb.toString(); class A implements Serializable B bb; A() bb=new B();class B implements Serializable B() public String toString()return happy;上述程序是否编译出错? 不出错回答:输出结果:6、给定一个文本文件num.txt,该文件中存有一列数,如下:104325431572编程从文件中读取这列数后,求出这些数的平均数。import java.io.*;import java.util.*;public class Test2 public static void main(String args)BufferedReader bre = null;try String file = num.txt;bre = new BufferedReader(new FileReader(file);int sum

温馨提示

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

评论

0/150

提交评论