《Java程序设计》实验9.docx
《《Java程序设计》实验9.docx》由会员分享,可在线阅读,更多相关《《Java程序设计》实验9.docx(18页珍藏版)》请在冰点文库上搜索。
![《Java程序设计》实验9.docx](https://file1.bingdoc.com/fileroot1/2023-5/3/43066ccd-3333-4d93-8b1d-7e7418447a64/43066ccd-3333-4d93-8b1d-7e7418447a641.gif)
《Java程序设计》实验9
《Java语言程序设计》
上机实验报告
实验名称:
实验九
班级:
软件工程133
姓名:
陈超
学号:
1130299452
上机时间:
2014.12.11
指导教师:
虞建东
一、实验内容或题目:
一、编程。
编写应用程序,使用System.in.read()方法读取用户从键盘输入的字节数据,回车后,把从键盘输入的数据存放到数组buffer中,并将用户输入的数据保存为指定路径下的文件。
二、编程。
编写应用程序,分别使用FileInputStream和FileReader类对象读取程序本身(或其他目录下的文件)并显示在屏幕上。
同时,比较两种方法的性能。
三、编程。
编写应用程序,程序中创建一个文件输入流对象fis,读取当前目录下文本文件test1.txt,该文件内容有如下两行文本:
Javaprogramiseasy.
Ilikeit.
从文件输入流fis中读取5个字节数据存放到数组b中,字节数据存放的位置从数组下标3开始,将读取的数据在屏幕输出。
四、编程。
使用异常处理机制和输入/输出处理机制编写一个程序,实现当用户输入一个文件名时,判断这个文件名是否存在,若不存在,允许用户重新输入,直到输入了一个正确的文件名后,则打开这个文件并将文件中的内容输出到屏幕上。
【提示】
(1)定义从键盘接收数据的标准输入流对象和文件对象;
(2)在此文件对象的基础上建立缓冲文件输入流,如果文件不存在,通过异常处理机制显示错误的处理结果,并要求重新输入文件路径;
(3)如果输入的文件路径正确,使用缓冲文件输入流对象的方法将文件中的内容读取出来,并在屏幕上显示,然后退出整个程序。
五、编程。
设计一个通讯录,保存读者信息。
要求:
通讯录中包括一般通讯录中的基本信息,也需要实现普通的检索功能。
通讯录写入文件中。
六、编程。
一家杂货店的店主,需要查询、输入、修改任何一件商品的品名、价格、货存量信息。
请用随机存取文件满足其要求,可以更新、查询信息。
每件商品的标志为其记录号。
【提示】
使用文件输入类FileReader只能将文件内容全部读入。
如果要选择读入文件的内容,可使用随机文件类RandomAccessFile。
七、编程。
编写一个文件操作类FileOperate,实现以下方法:
(1)创建指定的目录makeDirectory:
如果指定的目录的父目录不存在则创建其目录树上所有需要的父目录。
(2)清空指定目录中的所有文件emptyDirectory方法:
这个方法将尽可能删除所有的文件,但是只要有一个文件没有被删除都会返回false。
(3)listAll方法:
列出目录中的所有内容,包括其子目录中的内容。
(4)getTypePart方法:
得到指定目录下所有以某后缀命名的所有文件名。
(5)搜索文件SearchFile方法:
搜索给定目录下的指定文件,支持模糊查询和深度搜索。
如:
test.*,则返回所有以test.开头的文件名。
(6)拷贝文件Copy方法:
参数1:
fromFileName源文件名;参数2:
toFileName目标文件名;参数3:
override目标文件存在时是否覆盖,返回类型为boolean。
二、实验目的与要求:
1.理解数据流的概念
2.理解Java流的层次结构
3.理解文件的概念
三、实验步骤与源程序:
(1)实验步骤
a) 编辑源文件
b) 编译
c) 运行
(2)源代码
【写出解决本次上机题目的源代码,并提供语句的注释;如程序过长则给出主要程序段并写出注释】
题目1
importjava.io.BufferedReader;
importjava.io.IOException;
importjava.io.InputStreamReader;
importjava.io.*;
publicclassAa{
publicstaticvoidmain(String[]args)throwsIOException{
BufferedReaderin=newBufferedReader(newInputStreamReader(System.in));
Strings=in.readLine();
byte[]buffer=s.getBytes();
System.out.println(buffer);
FileWriterf=newFileWriter("D:
\\1.txt");
BufferedWriterwriter=newBufferedWriter(f);
writer.write(s);
writer.close();
}
}
题目2:
importjava.io.*;
publicclassAa{
publicstaticvoidmain(String[]args)throwsIOException{
FileInputStreamin=newFileInputStream("D:
/test.txt");
byteb[]=newbyte[1024];
intlen1=in.read(b);
in.close();
System.out.println("内容为:
"+newString(b,0,len1));
Filef=newFile("D:
/test.txt");
Readerinput=null;
input=newFileReader(f);
charc[]=newchar[1024];
intlen2=input.read(c);
input.close();
System.out.println("内容为:
"+newString(c,0,len2));
}
}
题目3:
importjava.io.File;
importjava.io.FileInputStream;
importjava.io.InputStream;
publicclassIo{
publicstaticvoidmain(String[]args)throwsException{
//TODOAuto-generatedmethodstub
Filefis=newFile("d:
"+File.separator+"test.txt");
InputStreaminput=null;
input=newFileInputStream(fis);
byteb[]=newbyte[8];
intlen=input.read(b,3,5);
input.close();
for(inti=3;iSystem.out.println((char)b[i]);
}
}
}
题目4:
importjava.io.*;
importjava.util.Scanner;
publicclassIo{
publicstaticvoidmain(String[]args)throwsException{
//TODOAuto-generatedmethodstub
booleantest=true;
while(test){
System.out.println("请输入文件名");
Scannerin=newScanner(System.in);
Strings=in.next();
Filef=newFile("d:
"+s);
if(f.exists()){
test=false;
try{
InputStreaminput=null;
input=newFileInputStream(f);
byte[]b=newbyte[1024];
intlen=input.read(b);
System.out.println("内容为:
"+newString(b,0,len));
}catch(Exceptione){
System.out.println(e);
}
}
}
}
}
题目5:
importjava.io.BufferedOutputStream;
importjava.io.File;
importjava.io.FileNotFoundException;
importjava.io.FileOutputStream;
importjava.io.FileReader;
importjava.io.IOException;
importjava.io.PrintWriter;
importjava.util.Scanner;
classAddList{
privateStringfilePath="";
privateStringbakPath="";
privateStringcontent="";
Scannersc=newScanner(System.in);
publicStringreadFile(){
content="";
if(isNull(filePath)){
System.out.println("文件存储路径:
");
filePath=sc.nextLine();
}
Filefile=newFile(filePath);
FileReaderfr=null;
try{
if(file.exists()){
fr=newFileReader(file);
char[]chars=newchar[1024];
intn=0;
while((n=fr.read(chars))!
=-1){
Stringstring=newString(chars,0,n);
content=content+string;
}
}else{
System.out.println("文件不存在");
}
}catch(Exceptione){
e.printStackTrace();
}finally{
if(fr!
=null){
try{
fr.close();
}catch(IOExceptione){
e.printStackTrace();
}
}
}
returncontent;
}
publicvoidwriteFile(Stringpath){
Filefile=newFile(path);
FileOutputStreamfos=null;
mkDirs(path);
try{
fos=newFileOutputStream(file);
BufferedOutputStreambos=newBufferedOutputStream(fos);
PrintWriterpw=newPrintWriter(bos,true);
pw.print(content);
pw.flush();
}catch(FileNotFoundExceptione){
e.printStackTrace();
}finally{
if(fos!
=null){
try{
fos.close();
}catch(IOExceptione){
e.printStackTrace();
}
}
}
}
publicvoidwriteFile(){
if(isNull(filePath)){
System.out.println("文件存储路径:
");
filePath=sc.nextLine();
}
Filefile=newFile(filePath);
FileOutputStreamfos=null;
mkDirs(filePath);
try{
fos=newFileOutputStream(file);
BufferedOutputStreambos=newBufferedOutputStream(fos);
PrintWriterpw=newPrintWriter(bos,true);
pw.print(content);
pw.flush();
}catch(FileNotFoundExceptione){
e.printStackTrace();
}finally{
if(fos!
=null){
try{
fos.close();
}catch(IOExceptione){
e.printStackTrace();
}
}
}
}
publicvoidmkDirs(Stringfilepath){
if(filepath.indexOf("\\")!
=-1){
filepath=filepath.replaceAll("\\","/");
}
intn=filepath.indexOf("//");
Stringpath=filepath.substring(0,n)+"//";
filepath=filepath.substring(filepath.indexOf("//")+1,filepath.length());
String[]files=filepath.split("/");
for(inti=0;ipath=path+files[i];
Filefile=newFile(path);
if(!
file.exists()){
file.mkdir();
}
}
}
publicvoidaddImfor(){
System.out.println("--------增加记录---------");
Stringname="";
Stringtel="";
Stringemail="";
content=readFile();
while(true){
System.out.println("姓名:
");
name=sc.next();
System.out.println("电话:
");
tel=sc.next();
System.out.println("Email:
");
email=sc.next();
content=content+name+"<>"+tel+"<>"+email+"<==>";
System.out.println("0、Exit1、继续");
inti=sc.nextInt();
if(i==0){
break;
}
}
writeFile();
}
publicvoiddeleteImfor(){
System.out.println("---------删除记录---------");
Stringname="";
String[]imfors=null;
content=readFile();
while(true){
System.out.println("你要删除的姓名是:
");
name=sc.next();
if(content.indexOf(name)!
=-1){
imfors=content.split("<==>");
for(inti=0;iif(imfors[i].indexOf(name)!
=-1){
imfors[i]="";
}
}
content="";
for(inti=0;iif(!
isNull(imfors[i])){
content=content+imfors[i]+"<==>";
}
}
writeFile();
System.out.println("删除成功");
}else{
System.out.println("此人不存在");
}
System.out.println("0、Exit1、继续");
inti=sc.nextInt();
if(i==0){
break;
}
}
}
publicvoidviewAll(){
System.out.println("----------显示所有------------");
content=readFile();
if(!
isNull(content)){
String[]imfors=content.split("<==>");
System.out.println("姓名\t电话\tEmail");
for(inti=0;iString[]imfor=imfors[i].split("<>");
for(intj=0;jSystem.out.print(imfor[j]+"\t");
}
System.out.println();
}
}else{
System.out.println("暂时还没有记录");
}
}
publicvoidqueryImfor(){
System.out.println("----------查找记录-----------");
content=readFile();
if(!
isNull(content)){
Stringresult="";
String[]imfors=null;
String[]imfor=null;
Stringname="";
booleanbool=false;
while(true){
result="";
System.out.println("请输入关键字(按姓名查找):
");
name=sc.next();
bool=false;
if(content.indexOf(name)!
=-1){
imfors=content.split("<==>");
for(inti=0;iif(imfors[i].indexOf(name)!
=-1){
imfor=imfors[i].split("<>");
if(imfor[0].equals(name)){
bool=true;
result=result+imfors[i]+"<==>";
}
}
}
if(bool){
imfors=result.split("<==>");
System.out.println("姓名\t电话\tEmail");
for(inti=0;iimfor=imfors[i].split("<>");
for(intj=0;jSystem.out.print(imfor[j]+"\t");
}
System.out.println();
}
}else{
System.out.println("无此人信息");
}
}else{
System.out.println("无此人信息");
}
System.out.println("0、Exit1、继续");
inti=sc.nextInt();
if(i==0){
break;
}
}
}else{
System.out.println("文件还没有记录");
}
}
publicvoidcopy(){
System.out.println("----------备份-----------");
content=readFile();
if(isNull(bakPath)){
System.out.println("备份全路径:
");
bakPath=sc.next();
}
writeFile(bakPath);
System.out.println("备份成功");
}
publicbooleanisNull(Stringstring){
if(null==string||""==string||0==string.length()){
returntrue;
}else{
returnfalse;
}
}
publicstaticvoidmain(String[]args){
AddListadd=newAddList();
Scannersc=newScanner(System.in);
intoperater=0;
while(true){
System.out.println("选择功能:
\n1、增加记录2、删除记录3、显示所有4、查询记录5、备份6、退出");
operater=sc.nextInt();
if(1==operater){
add.addImfor();
}elseif(2==operater){
add.deleteImfor();
}elseif(3==operater){
add.viewAll();
}elseif(4==operater){
ad