if(f1[i].isDirectory()){
System.out.println("dirctoryis"+f1[i].getName());
}
else{
System.out.println("flieis"+f1[i].getName());
}
}
}
}
2.编写一个JavaApplication程序(文件名为CopyFile.java),要求通过字节流从该文件中读取数据并写入到“temp.txt”文件中去,实现该文件的复制。
importjava.io.*;
publicclassCopyFile{
publicstaticvoidmain(Stringargs[]){
inta;byte[]b="你好吗,逗比".getBytes();
try{
FileOutputStreamout=newFileOutputStream("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),将程序文件本身的内容每行开头添加上行号拷贝到另一个文件tempfile.txt中。
importjava.io.*;
publicclassReadExample{
publicstaticvoidmain(Stringargs[]){
inta;char[]b=newchar[18];
try{
Filef=newFile("D:
\\jdk1.8.0_20\\新建文件夹\\zzj\\src\\zzj\\ReadExample.java");
FileReaderin=newFileReader(f);
FileWriterout=newFileWriter("D:
\\jdk1.8.0_20\\新建文件夹\\zzj\\src\\zzj\\tempfile.txt");
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[]){
FilefRead=newFile("score.txt");
FilefWrite=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[]){
FilefRead=newFile("D:
\\jdk1.8.0_20\\新建文件夹\\zzj\\src\\zzj\\score.txt");
FilefWrite=newFile("D:
\\jdk1.8.0_20\\新建文件夹\\zzj\\src\\zzj\\socreAnalysis.txt");
try{
Writerout=newFileWriter(fWrite);
BufferedWriterbufferWrite=newBufferedWriter(out);
Readerin=newFileReader(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{
FileWriterout=newFileWriter("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{
RandomAccessFilerf=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{
RandomAccessFilerf=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.FileInputStream;
importjava.io.FileOutputStream;
importjava.io.IOException;
importjava.io.ObjectInputStream;
importjava.io.ObjectOutputStream;
importjava.io.Serializable;
publicclassSerializableDemo{
publicstaticvoidmain(Stringargs[])throwsException{
studentstu=newstudent(20131064,"张三",20,"西华大学");
FileOutputStreamfout=newFileOutputStream("data1.ser");
ObjectOutputStreamoout=new【代码1】;
//输出对象
oout.writeObject(stu);
oout.close();
stu=null;
FileInputStreamfin=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.FileInputStream;
importjava.io.FileOutputStream;
importjava.io.IOException;
importjava.io.ObjectInputStream;
importjava.io.ObjectOutputStream;
importjava.io.Serializable;
publicclassSerializableDemo{
privatestaticstudentstu;
publicstaticvoidmain(Stringargs[])throwsException{
stu=newstudent(20131064,"张三",20,"西华大学");
FileOutputStreamfout=newFileOutputStream("data1.ser");
ObjectOutputStreamoout=newObjectOutputStream(fout);
oout.writeObject(stu);
oout.close();
stu=null;
FileInputStreamfin=newFileInputStream("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("FileInputStream-FileOutputStream演示");
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