《JAVA语言》实验报告(9)实验名称:________________指导教师:___________实验日期:________________专业:________________班级:___________姓名:________________一、实验目的:1.了解Java常用的系统类,包括JavaApplet、、输入输出流类的基本使用方法。2.理解Java系统数据流的构成。二、实验内容:一、使用输入输出流类1.使用标准数据流的应用程序标准数据流指在字符方式下(如DOS提示符)程序与系统进行输入输出的方式,键盘和显示器屏幕是标准输入输出设备,数据输入的起点为键盘,数据输出的终点是屏幕。(1)程序功能:将键盘上输入的字符在屏幕上显示出来。(2)编写LX5_3.java程序文件,源代码如下。classLX5_3{publicstaticvoidmain(String[]args)throwsjava.io.IOException{bytebuffer[]=newbyte[10];System.out.println(从键盘输入不超过10个字符,按回车键结束输入:);intcount=System.in.read(buffer);//读取输入的字符并存放在缓冲区buffer中System.out.println(保存在缓冲区buffer中元素的个数为:+count);System.out.println(buffer中各元素的值为:);for(inti=0;icount;i++){System.out.print(+buffer[i]);//在屏幕上显示buffer元素的值}System.out.println();System.out.println(输出buffer字符元素:);System.out.write(buffer,0,buffer.length);}}(3)编译LX5_3.java文件。(4)在命令提示符窗口运行LX5_3.class文件,并输入1234,结果如图9.3所示。图9.32.使用文件输入输出流的应用程序Java数据流编程张鑫2015-5-8网络工程网络工程1301秦文龙(1)程序功能:将保存在本地机当前文件夹中的LX5_1.HTML文本文件的内容在屏幕上显示出来,然后将其另存为LX5_1.txt文件。(2)编写LX5_4.java程序文件,源代码如下。importjava.io.*;publicclassLX5_4{publicstaticvoidmain(String[]args)throwsIOException{FileReaderin=newFileReader(LX5_1.HTML);//建立文件输入流BufferedReaderbin=newBufferedReader(in);//建立缓冲输入流FileWriterout=newFileWriter(LX5_1.txt,true);//建立文件输出流Stringstr;while((str=bin.readLine())!=null){//将缓冲区内容通过循环方式逐行赋值给字符串strSystem.out.println(str);//在屏幕上显示字符串strout.write(str+\n);//将字符串str通过输出流写入LX5_1.txt中}in.close();out.close();}}(3)编译并运行程序,结果如图9.4所示。图9.4(4)在当前文件夹中找到LX5_1.txt文件并打开,可看到如图5.6所示内容。再运行一次程序,看看会发生什么变化。图9.53.使用随机文件类的应用程序使用文件输入类FileReader只能将文件内容全部读入。如果要选择读入文件的内容,可使用随机文件类RandomAccessFile。(1)程序功能:建立数据流,通过指针有选择的读入文件内容。(2)编写LX5_5.java程序文件,源代码如下。importjava.io.*;classLX5_5{publicstaticvoidmain(Stringargs[]){Stringstr[]={Firstline\n,Secondline\n,Lastline\n};try{RandomAccessFilerf=newRandomAccessFile(LX5_5.txt,rw);System.out.println(\n文件指针位置为:+rf.getFilePointer());System.out.println(文件的长度为:+rf.length());rf.seek(rf.length());System.out.println(文件指针现在的位置为:+rf.getFilePointer());for(inti=0;i3;i++)rf.writeChars(str[i]);//字符串转为字节串添加到文件末尾rf.seek(10);System.out.println(\n选择显示的文件内容:);Strings;while((s=rf.readLine())!=null)System.out.println(s);rf.close();}catch(FileNotFoundExceptionfnoe){}catch(IOExceptionioe){}}}(3)编译并运行程序,结果如图9.6所示。图9.64.使用数据输入输出流与文件输入输出流类的应用程序使用数据输出流DataOutputStream和数据输入流DataInputStream可以读取或写入任何Java类型的数据,不用关心它们的实十际长度是多少字节。一般与文件输入流FileInputStream和输出流类FileOutputStream一起使用。(1)程序功能:将整型数据和字符串对象通过数据输出流写到文件中。将文件中的整型数据和字符串对象通过数据输出流读出,并在屏幕上显示文件中的内容。(2)编写LX5_6.java程序文件,源代码如下。importjava.io.*;publicclassLX5_6{publicstaticvoidmain(Stringarg[]){try{//添加方式创建文件输出流FileOutputStreamfout=newFileOutputStream(LX5_6.txt,true);DataOutputStreamdout=newDataOutputStream(fout);dout.writeInt(1);dout.writeChars(罗马+\n);dout.writeInt(2);dout.writeChars(北京+\n);dout.close();}catch(IOExceptionioe){}try{FileInputStreamfin=newFileInputStream(LX5_6.txt);DataInputStreamdin=newDataInputStream(fin);inti=din.readInt();while(i!=-1){//输入流未结束时,输入流结束时i为-1System.out.print(i+);charch;while((ch=din.readChar())!='\n')//字符串未结束时System.out.print(ch);System.out.println();i=din.readInt();}din.close();}catch(IOExceptionioe){}}}(3)编译并运行程序,结果如图9.7所示。图9.75.使用对象输入输出流的应用程序使用对象流可以直接写入或读取一个对象。由于一个类的对象包含多种信息,为了保证从对象流中能够读取到正确的对象,因此要求所有写入对象流的对象都必须是序列化的对象。一个类如果实现了Serializable接口,那么这个类的对象就是序列化的对象。Serializable接口没有方法,实现该接口的类不需要实现额外的方法。(1)程序功能:保存对象信息到文件,并将文件中的对象信息显示出来。(2)编写LX10_3.java程序文件,源代码如下。importjava.io.*;publicclassLX10_3implementsSerializable{//序列化接口intbh=1;intnl=21;Stringxm;LX10_3(intbh,Stringxm,intnl){//构造方法this.bh=bh;this.xm=xm;this.nl=nl;}LX10_3(){//构造方法this(0,,21);}voidsave(Stringfname){//保存到文件中的方法try{FileOutputStreamfout=newFileOutputStream(fname);//输出文件流ObjectOutputStreamout=newObjectOutputStream(fout);//输出对象流out.writeObject(this);//写入对象out.close();}catch(FileNotFoundExceptionfe){}catch(IOExceptionioe){}}voiddisplay(Stringfname){//显示文件中对象信息的方法try{FileInputStreamfin=newFileInputStream(fname);//输入文件流ObjectInputStreamin=newObjectInputStream(fin);//输入对象流LX10_3OO=(LX10_3)in.readObject();//读取对象System.out.println(类名:+OO.getClass().getName()++OO.getClass().getInterfaces()[0]);System.out.println(+OO.bh++OO.xm++OO.nl);in.close();}catch(FileNotFoundExceptionfe){}catch(IOExceptionioe){}catch(ClassNotFoundExceptionioe){}}publicstaticvoidmain(Stringarg[]){Stringfname=LX10_3.obj;LX10_3O1=newLX10_3(1,张驰,14);O1.save(fname);O1.display(fname);}}(3)编译并运行程序,结果如图9.8所示。图9.8三、实验结果与结论:1.请设计一个从键盘输入一个数n,求n!2.写一个程序,允许用户依次输入多个姓名和住址,并能将用户的输入保存到文件中。用户输入“quit”表示输入完毕,程序退出。四、实验总结:教师评语