Java实验指导4io流文档格式.docx
《Java实验指导4io流文档格式.docx》由会员分享,可在线阅读,更多相关《Java实验指导4io流文档格式.docx(17页珍藏版)》请在冰豆网上搜索。
dirctoryis"
+f1[i].getName());
}
else{
flieis"
}
}
2.编写一个JavaApplication程序(文件名为Copy),要求通过字节流从该文件中读取数据并写入到“temp.txt”文件中去,实现该文件的复制。
publicclassCopyFile{
publicstaticvoidmain(Stringargs[]){
inta;
byte[]b="
你好吗,逗比"
.getBytes();
try{
out=new("
\\jdk1.8.0_20\\新建文件夹\\zzj\\src\\zzj\\temp.txt"
out.write(b);
out.close();
}
catch(IOExceptione){
error"
+e);
3.编写一个程序(文件名为ReadExample.java),将程序文件本身的内容每行开头添加上行号拷贝到另一个文件temp中。
publicclassReadExample{
char[]b=newchar[18];
newFile("
\\jdk1.8.0_20\\新建文件夹\\zzj\\src\\zzj\\ReadExample.java"
in=new(f);
\\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();
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文件清单:
publicclassAnalysisResult{
publicstaticvoidmain(Stringargs[]){
=newFile("
score.txt"
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{
\\jdk1.8.0_20\\新建文件夹\\zzj\\src\\zzj\\score.txt"
\\jdk1.8.0_20\\新建文件夹\\zzj\\src\\zzj\\socreAnalysis.txt"
Writerout=new(fWrite);
BufferedWriterbufferWrite=newBufferedWriter(out);
Readerin=new(fRead);
BufferedReaderbufferRead=newBufferedReader(in);
5.编写一个程序,利用缓冲流实现接收键盘输入的数据,并写入到指定文件中(如当前目录下的tt.txt文件)的功能,要求键盘输入”exit”时结束。
(提示:
)
importjava.util.Scanner;
publicclasssy5{
Scannersc=newScanner(System.in);
Strings=sc.next();
\\jdk1.8.0_20\\新建文件夹\\zzj\\src\\zzj\\tt.txt"
while(s=="
exit"
){
BufferedWriterbr=newBufferedWriter(out);
br.write(s);
s=sc.next();
6.下面的程序使用随机流进行文件的保存和读取,请按如下的程序模板中的要求,将【代码】替换为Java程序代码,以完成该程序,使得程序在控制台的输出结果如下:
程序清单:
publicclasstestRandom2{
try{
RandomAccess=newRandomAccessFile("
rtest.dat"
"
rw"
for(inti=0;
i<
10;
i++){
rf.writeInt(i);
rf.writeDouble(i*1.414);
rf.close();
rf=newRandomAccessFile("
rf.seek(【代码1】);
rf.writeInt(47);
rf.writeDouble(47.00021);
r"
;
System.out.println("
Value"
+rf.readInt()+"
:
"
+【代码2】);
rf.【代码3】;
}catch(IOExceptione){
System.out.println(e.toString());
rf.seek(0);
+rf.readDouble());
7.下面的程序使用对象的序列化及对象流进行对象的保存和读取,请按如下的程序模板中的要求,将【代码】替换为Java程序代码,以完成该程序。
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("
学生信息:
ID:
+stu.id);
name:
+stu.name);
age:
+stu.age);
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;
privatestaticstudentstu;
stu=newstudent(20131064,"
ObjectOutputStreamoout=newObjectOutputStream(fout);
fin=new("
ObjectInputStreamoin=newObjectInputStream(fin);
stu=newstudent(20131064,"
System.out.println("
ID:
+stu.id);
+stu.name);
8.下面的程序以字节为单位进行文件的读写操作,请阅读并分析该程序,上机运行查看效果,然后修改程序,使其以字符流方式进行文件的读写操作。
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;
s22.length;
i++)
(s22[i]);
();
}catch(IOExceptionie){
jt1.setText("
jt2.setText("
voidreader(){
Strings1,s2="
;
}else
{
intc;
while((c=())!
=-1)
s2=s