实验04-Java输入输出流报告.doc
《实验04-Java输入输出流报告.doc》由会员分享,可在线阅读,更多相关《实验04-Java输入输出流报告.doc(8页珍藏版)》请在冰点文库上搜索。
实验四Java输入输出流
1.实验目的
(1)掌握输入输出流的总体结构;
(2)掌握流的概念;
(3)了解各种流(包括文件流、过滤流、对象的序列化、随机访问)的使用。
2.实验内容
实验题1编写一个JavaApplication程序,打印命令行输入的所有参数。
[基本要求]编写完整程序。
运行结果:
代码如下:
importjava.util.Scanner;
publicclassCommandOutPut{
/**
*@paramargs
*/
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
System.out.println("Pleaseinput:
");
Scannerin=newScanner(System.in);
Stringstr=in.nextLine();
System.out.println("Theoutputresults:
");
System.out.println(str);
in.close();
}
}
实验题2通过键盘输入路径,搜索指定路径下的全部内容。
运行结果:
代码如下:
packagecn.edu.output;
importjava.io.File;
importjava.io.FileInputStream;
importjava.io.IOException;
publicclassOutput{
/**
*@paramargs
*@throwsIOException
*/
publicstaticvoidmain(String[]args)throwsIOException{
//TODOAuto-generatedmethodstub
StringfileName="d:
\\xxx.txt";
Filefile=newFile(fileName);
byte[]b=newbyte[(int)file.length()];
FileInputStreamout=newFileInputStream(file);
out.read(b);
out.close();
Strings=newString(b);//将字节流转换为字符串
System.out.println(s);
}
}
实验题3设计一个类FileRWTest,实现从input.txt文件中读入数据到字符数组cBuffer中,然后再写入到文件“output.txt”中。
运行结果:
代码:
packagecn.edu.fileRWTester;
importjava.io.BufferedReader;
importjava.io.BufferedWriter;
importjava.io.FileReader;
importjava.io.FileWriter;
importjava.io.IOException;
publicclassFileRWTest{
/**
*@paramargs
*@throwsIOException
*/
publicstaticvoidmain(String[]args)throwsIOException{
//TODOAuto-generatedmethodstub
BufferedReadersource=newBufferedReader(newFileReader("d:
\\input.txt"));
BufferedWritertarget=newBufferedWriter(newFileWriter("d:
\\output.txt"));
//byte[]cBuffer=newbyte[(int)((CharSequence)source).length()];
Stringtemp=null;////将字节流转换为字符串
while((temp=source.readLine())!
=null){
target.write(temp);
target.newLine();
target.flush();
}
source.close();
target.close();
}
}
实验题4建立一个书籍信息的文本文件,其中包括编号、书籍名称、版本、价格、销售额字段及5本书籍的记录。
编写程序读入书籍信息文件并将第3本、第4本书籍价格分别增加20和30,再将修改后的书籍信息文件输出到另一个文本文件中(文件名称为book.txt)。
文本文件book.txt内容如下:
编号名称版本价格销售额
1001 Java程序设计 第2版 56.9 560
1002 Java开发实战 第1版 98.9 820
1003 C++程序设计指南 第3版 62.5 362
1004 EJB3.0入门经典 第1版 59.8 1280
1005Spring3.0inAction 第3版 95.8 1189
设计思路:
首先建立一个Book类,定义属性privateStringnum,privateStringname,privateStringedition,privateFloatprice,privateFloatslaes,在主函数中创建5个实例,并把值赋给Stringtext,然后调用target.write()函数写入文件book里。
运行结果:
检测是否写入,用read()函数读出:
代码:
packagecn.edu.Input.tester;
importjava.io.BufferedWriter;
importjava.io.FileWriter;
importjava.io.IOException;
importcn.edu.Input.clas.Book;
publicclassInputTester{
/**
*@paramargs
*@throwsIOException
*/
publicstaticvoidmain(String[]args)throwsIOException{
//TODOAuto-generatedmethodstub
Bookb1=newBook("1001","Java程序设计","第2版",56.9F,560f);
Bookb2=newBook("1002","Java开发实战","第1版",98.9f,820f);
Bookb3=newBook("1003","C++程序设计指南","第3版",62.5f,362f);
Bookb4=newBook("1004","EJB3.0入门经典","第1版",59.8f,1280f);
Bookb5=newBook("1005","Spring3.0inAction","第3版",95.8f,1189f);
Book[]books={b1,b2,b3,b4,b5};
Stringtext=null;
for(intindex=0;index text+=books[index];
text+='\n';
}
BufferedWritertarget=newBufferedWriter(newFileWriter(
"d:
\\book.txt"));
target.write(text);
target.flush();
}
}
问题:
忘记在Book类中些toString函数,故导致每次写入都不是想要写入的东西。
实验题5有四个类,主类Store在包cn.edu.nwsuaf.jp.p4中,Mobile、Mp3Player、Product在包cn.edu.nwsuaf.jp.p4.data中,Mobile、Mp3Player是Product类的子类,Product类实现Seralizable接口。
基本要求:
(1)在Store类中用ObjectOutputStream类的对象把Mobile、Mp3Player类对象输出到文件“product.txt”中。
(2)在Store类中用ObjectInputStream类的对象从文件“product.txt”输入数据并将其输出。
实验设计:
在product中重写writeObject和raedObject函数,并在主函数中调用writeObject和raedObject函数对文件读写。
实验结果:
写入文件的
从文件中读出的:
代码:
Product中的writeObject和raedObject函数:
privatevoidwriteObject(ObjectOutputStreamoos)throwsIOException{
oos.defaultWriteObject();
oos.writeBytes(getName());
oos.writeFloat(getPrice());
}
privatevoidreadObject(ObjectInputStreamois)throwsIOException,
ClassNotFoundException{
ois.defaultReadObject();
}
主函数:
packagecn.edu.nwsuaf.jp.p4;
importjava.io.FileInputStream;
importjava.io.FileOutputStream;
importjava.io.IOException;
importjava.io.ObjectInputStream;
importjava.io.ObjectOutputStream;
importcn.edu.nwsuaf.jp.p4.data.Mobile;
importcn.edu.nwsuaf.jp.p4.data.Mp3Player;
publicclassStore{
/**
*@paramargs
*/
publicstaticvoidmain(String[]args)throwsIOException,
ClassNotFoundException{
try{
Mp3Playerp1=newMp3Player("MeizoX3(256MB)",399.0f);
Mp3Playerp2=newMp3Player("MeizoE5(512MB)",580.0f);
Mp3Playerp3=newMp3Player("XliveXMMp3Play(256MB)",930.0f);
Mobilem1=newMobile("E365onChinaMobile",1780.0f);
Mobilem2=newMobile("E3330onChinaMobile",1450.0f);
ObjectOutputStreamoos=newObjectOutputStream(
newFileOutputStream("d:
\\product.txt"));
oos.writeObject(p1);
oos.writeObject(p2);
oos.writeObject(p3);
oos.writeObject(m1);
oos.writeObject(m2);
oos.close();
ObjectInputStreamois=newObjectInputStream(newFileInputStream(
"d:
\\product.txt"));
while((ois.readObject())!
=null){
System.out.println(ois.readObject());
}
ois.close();
}catch(Exceptione){
e.printStackTrace();
}
}
}
三、实验总结:
通过本次试验,掌握了输入输出流的简单用法,但运用不是很熟练,不看书很难编写下去。
学习使用对象流,但对重写writeObject和raedObject函数掌握不是很好,还未做到熟练应用。
好的一点是,对toString函数可以熟练地掌握,并且能够自己发现错误,找到错误,并改正错误,虽然编写的很辛苦,但还是蛮有收获感的!