Java实验指导4io流.docx

上传人:b****3 文档编号:5292968 上传时间:2022-12-15 格式:DOCX 页数:17 大小:36.74KB
下载 相关 举报
Java实验指导4io流.docx_第1页
第1页 / 共17页
Java实验指导4io流.docx_第2页
第2页 / 共17页
Java实验指导4io流.docx_第3页
第3页 / 共17页
Java实验指导4io流.docx_第4页
第4页 / 共17页
Java实验指导4io流.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

Java实验指导4io流.docx

《Java实验指导4io流.docx》由会员分享,可在线阅读,更多相关《Java实验指导4io流.docx(17页珍藏版)》请在冰豆网上搜索。

Java实验指导4io流.docx

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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1