Java实验指导4io流.docx
- 文档编号:5292968
- 上传时间:2022-12-15
- 格式:DOCX
- 页数:17
- 大小:36.74KB
Java实验指导4io流.docx
《Java实验指导4io流.docx》由会员分享,可在线阅读,更多相关《Java实验指导4io流.docx(17页珍藏版)》请在冰豆网上搜索。
Java实验指导4io流
实验4:
输入输出流
一、实验目的
1.理解I/O流的概念,掌握其分类,掌握JavaI/O基本原理。
2.掌握对硬盘上的文件和目录进行操作的基本方法。
3.掌握、类的基本使用方法。
4.掌握类、类的使用。
5.掌握BufferedWriter类、BufferedWriter类的使用。
6.掌握RandomAccessFile类的使用。
7.掌握对象序列化的方法及ObjectInputStream、ObjectOutputStream类的基本使用方法。
二、实验要求
本次实验要求以Eclipse为开发平台。
三、实验内容与步骤
1.编写一个JavaApplication程序,实现如下的设计功能:
运行该程序可以列出当前目录下的所有文件。
importjava.io.*;
publicclasssy1{
publicstaticvoidmain(Stringargs[]){
newFile("D:
\\");
();
File[]f1=();
for(inti=0;i if(f1[i].isDirectory()){ System.out.println("dirctoryis"+f1[i].getName()); } else{ System.out.println("flieis"+f1[i].getName()); } } } } 2.编写一个JavaApplication程序(文件名为Copy),要求通过字节流从该文件中读取数据并写入到“temp.txt”文件中去,实现该文件的复制。 importjava.io.*; publicclassCopyFile{ publicstaticvoidmain(Stringargs[]){ inta;byte[]b="你好吗,逗比".getBytes(); try{ out=new("D: \\jdk1.8.0_20\\新建文件夹\\zzj\\src\\zzj\\temp.txt"); out.write(b); out.close(); } catch(IOExceptione){ System.out.println("error"+e); } } } 3.编写一个程序(文件名为ReadExample.java),将程序文件本身的内容每行开头添加上行号拷贝到另一个文件temp中。 importjava.io.*; publicclassReadExample{ publicstaticvoidmain(Stringargs[]){ inta;char[]b=newchar[18]; try{ newFile("D: \\jdk1.8.0_20\\新建文件夹\\zzj\\src\\zzj\\ReadExample.java"); in=new(f); out=new("D: \\jdk1.8.0_20\\新建文件夹\\zzj\\src\\zzj\\temp"); while((a=in.read(b,0,18))! =-1){ Strings=newString(b,0,18); out.write(b); System.out.print(b); } in.close(); out.close(); } catch(IOExceptione){ System.out.println("error"+e); } } } 4.现在有如下格式的学生成绩单(文本格式)score.txt: 姓名: 张三,数学72分,物理67分,英语70分. 姓名: 李四,数学92分,物理98分,英语88分. 姓名: 周五,数学68分,物理80分,英语77分. 要求按行读入成绩单,并在该行的后面加上该运动员的总成绩,然后再将该行写入到一个名字为socreAnalysis.txt的文件中。 请按如下的程序模板中的要求,将【代码】替换为Java程序代码,以完成该程序。 Fenxi.java文件清单: importjava.util.*; publicclassFenxi{ publicstaticintgetTotalScore(Strings){ Stringregex="[^0123456789]";//匹配非数字的正则表达式 StringdigitMess=s.replaceAll(regex,"*"); StringTokenizerfenxi=newStringTokenizer(digitMess,"*"); inttotalScore=0; while(fenxi.hasMoreTokens()){ intscore=Integer.parseInt(fenxi.nextToken()); totalScore=totalScore+score;} returntotalScore; } } AnalysisResult.java文件清单: importjava.io.*; importjava.util.*; publicclassAnalysisResult{ publicstaticvoidmain(Stringargs[]){ =newFile("score.txt"); =newFile("socreAnalysis.txt"); try{ Writerout=【代码1】//创建指向文件fWrite的文件输出流对象out BufferedWriterbufferWrite=【代码2】//创建指向out的bufferWrite流 Readerin=【代码3】//创建指向文件fRead的文件输入流对象in BufferedReaderbufferRead=【代码4】//创建指向in的缓冲流 Stringstr=null; while((str=bufferRead.readLine())! =null){ inttotalScore=Fenxi.getTotalScore(str); str=str+"总成绩: "+totalScore; System.out.println(str); bufferWrite.write(str); bufferWrite.newLine(); } bufferRead.close(); bufferWrite.close(); } catch(IOExceptione){ System.out.println(e.toString()); } } } classAnalysisResult{ publicstaticvoidmain(Stringargs[]){ =newFile("D: \\jdk1.8.0_20\\新建文件夹\\zzj\\src\\zzj\\score.txt"); =newFile("D: \\jdk1.8.0_20\\新建文件夹\\zzj\\src\\zzj\\socreAnalysis.txt"); try{ Writerout=new(fWrite); BufferedWriterbufferWrite=newBufferedWriter(out); Readerin=new(fRead); BufferedReaderbufferRead=newBufferedReader(in); Stringstr=null; while((str=bufferRead.readLine())! =null){ inttotalScore=Fenxi.getTotalScore(str); str=str+"总成绩: "+totalScore; System.out.println(str); bufferWrite.write(str); bufferWrite.newLine(); } bufferRead.close(); bufferWrite.close(); } catch(IOExceptione){ System.out.println(e.toString()); } } } 5.编写一个程序,利用缓冲流实现接收键盘输入的数据,并写入到指定文件中(如当前目录下的tt.txt文件)的功能,要求键盘输入”exit”时结束。 (提示: ) importjava.io.*; importjava.util.Scanner; publicclasssy5{ publicstaticvoidmain(Stringargs[]){ Scannersc=newScanner(System.in); Strings=sc.next(); try{ out=new("D: \\jdk1.8.0_20\\新建文件夹\\zzj\\src\\zzj\\tt.txt"); while(s=="exit"){ BufferedWriterbr=newBufferedWriter(out); br.write(s); s=sc.next(); } } catch(IOExceptione){ System.out.println("error"+e); } } } 6.下面的程序使用随机流进行文件的保存和读取,请按如下的程序模板中的要求,将【代码】替换为Java程序代码,以完成该程序,使得程序在控制台的输出结果如下: 程序清单: importjava.io.*; publicclasstestRandom2{ publicstaticvoidmain(Stringargs[]){ try{ RandomAccess=newRandomAccessFile("rtest.dat","rw"); for(inti=0;i<10;i++){ rf.writeInt(i); rf.writeDouble(i*1.414); } rf.close(); rf=newRandomAccessFile("rtest.dat","rw"); rf.seek(【代码1】); rf.writeInt(47); rf.writeDouble(47.00021); rf.close(); rf=newRandomAccessFile("rtest.dat","r"); for(inti=0;i<10;i++){ ; System.out.println("Value"+rf.readInt()+": " +【代码2】); } rf.【代码3】; }catch(IOExceptione){ System.out.println(e.toString()); } } } importjava.io.*; publicclasstestRandom2{ publicstaticvoidmain(Stringargs[]){ try{ RandomAccess=newRandomAccessFile("rtest.dat","rw"); for(inti=0;i<10;i++){ rf.writeInt(i); rf.writeDouble(i*1.414); } rf.close(); rf=newRandomAccessFile("rtest.dat","rw"); rf.seek(0); rf.writeInt(47); rf.writeDouble(47.00021); rf.close(); rf=newRandomAccessFile("rtest.dat","r"); for(inti=0;i<10;i++){ ; System.out.println("Value"+rf.readInt()+": " +rf.readDouble()); } rf.close(); }catch(IOExceptione){ System.out.println(e.toString()); } } } 7.下面的程序使用对象的序列化及对象流进行对象的保存和读取,请按如下的程序模板中的要求,将【代码】替换为Java程序代码,以完成该程序。 程序清单: importjava.io.; importjava.io.; importjava.io.IOException; importjava.io.ObjectInputStream; importjava.io.ObjectOutputStream; importjava.io.Serializable; publicclassSerializableDemo{ publicstaticvoidmain(Stringargs[])throwsException{ studentstu=newstudent(20131064,"张三",20,"西华大学"); fout=new("data1.ser"); ObjectOutputStreamoout=new【代码1】; //输出对象 oout.writeObject(stu); oout.close(); stu=null; fin=new【代码2】; ObjectInputStreamoin=new【代码3】; //读入对象 stu=【代码4】; oin.close(); System.out.println("学生信息: "); System.out.println("ID: "+stu.id); System.out.println("name: "+stu.name); System.out.println("age: "+stu.age); System.out.println("department: "+stu.department); } } classstudentimplementsSerializable{ intid; Stringname; intage; Stringdepartment; publicstudent(intid,Stringname,intage,Stringdepartment){ this.id=id; this.name=name; this.age=age; this.department=department; } } importjava.io.; importjava.io.; importjava.io.IOException; importjava.io.ObjectInputStream; importjava.io.ObjectOutputStream; importjava.io.Serializable; publicclassSerializableDemo{ privatestaticstudentstu; publicstaticvoidmain(Stringargs[])throwsException{ stu=newstudent(20131064,"张三",20,"西华大学"); fout=new("data1.ser"); ObjectOutputStreamoout=newObjectOutputStream(fout); oout.writeObject(stu); oout.close(); stu=null; fin=new("data1.ser"); ObjectInputStreamoin=newObjectInputStream(fin); stu=newstudent(20131064,"张三",20,"西华大学"); oin.close(); System.out.println("学生信息: "); System.out.println("ID: "+stu.id); System.out.println("name: "+stu.name); System.out.println("age: "+stu.age); System.out.println("department: "+stu.department); } } classstudentimplementsSerializable{ intid; Stringname; intage; Stringdepartment; publicstudent(intid,Stringname,intage,Stringdepartment){ this.id=id; this.name=name; this.age=age; this.department=department; } } 8.下面的程序以字节为单位进行文件的读写操作,请阅读并分析该程序,上机运行查看效果,然后修改程序,使其以字符流方式进行文件的读写操作。 程序清单: importjava.io.*; importjava.awt.*; importjava.awt.event.*; importjavax.swing.*; publicclassreaderbyteextendsJFrameimplementsActionListener{ JButtonb1,b2,b3; JTextFieldjt1; JTextAreajt2; readerbyte(){ setTitle("演示"); getContentPane().setLayout(newFlowLayout()); this.setDefaultLookAndFeelDecorated(true); this.setSize(450,350); b1=newJButton("写入"); b2=newJButton("读取"); b3=newJButton("退出"); b1.addActionListener(this); b2.addActionListener(this); b3.addActionListener(this); jt1=newJTextField(10); jt2=newJTextArea(10,30); jt2.setLineWrap(true); jt2.setWrapStyleWord(true); JScrollPanejspa=newJScrollPane(jt2); JPanelp1=newJPanel(); p1.add(newJLabel("请输入文件名: ")); p1.add(jt1); JPanelp2=newJPanel(); p2.add(newJLabel("文件内容: ")); p2.add(jspa); JPanelp3=newJPanel(); p3.add(b1); p3.add(b2); p3.add(b3); getContentPane().add(p1); getContentPane().add(p2); getContentPane().add(p3); setVisible(true); } publicvoidactionPerformed(ActionEventee){ if(ee.getSource()==b3){ dispose(); System.exit(0); } if(ee.getSource()==b1) writer(); if(ee.getSource()==b2) reader(); } voidwriter(){ Strings1,s2; s1=jt1.getText().trim(); if(s1.equals("")){ JOptionPane.showMessageDialog(null,"没有输入文件名"); jt1.requestFocus(); }else{ s2=jt2.getText().trim(); chars22[]=s2.toCharArray(); try{ file=new(s1); for(inti=0;i (s22[i]); (); }catch(IOExceptionie){ } jt1.setText(""); jt2.setText(""); } } voidreader(){ Strings1,s2=""; s1=jt1.getText().trim(); if(s1.equals("")){ JOptionPane.showMessageDialog(null,"没有输入文件名"); jt1.requestFocus(); }else { try{ file=new(s1); intc; while((c=())! =-1) s2=s
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 实验 指导 io