实验七.docx

上传人:b****7 文档编号:10280532 上传时间:2023-02-09 格式:DOCX 页数:17 大小:72.39KB
下载 相关 举报
实验七.docx_第1页
第1页 / 共17页
实验七.docx_第2页
第2页 / 共17页
实验七.docx_第3页
第3页 / 共17页
实验七.docx_第4页
第4页 / 共17页
实验七.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

实验七.docx

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

实验七.docx

实验七

计算机科学与技术系

实验报告

 

专业名称计算机科学与技术

课程名称JAVA语言程序设计

项目名称JAVA语言的编程环境和开发工具

班级

学号

姓名

实验日期2016/3/7

实验七文件管理与流式文件

1、实验性质:

验证型

2、实验学时:

课后完成

一、实验目的

1.熟悉用文件File类创建、删除、查看文件或目录。

2.字节流、字符流、缓冲流、随机流等流式文件的创建,读写操作。

3.用字符流和缓冲流从键盘接受字符串的方法。

二、实验内容

1.先运行该程序。

源文件是projec3\Ex7_1.java。

然后按【思考问题】分析程序。

importjava.io.*;

publicclassEx7_1

{publicstaticvoidmain(String[]args)throwsException

{FileMypath;

FileInputStreamFin=null;

FileOutputStreamFout=null;

DataInputStreamDin=null;

DataOutputStreamDout=null;

PrintWriterPWout=null;

RandomAccessFileRAread=null;

intx=0;

Mypath=newFile("f:

\\aaaa");

if(!

Mypath.exists())

{System.out.println("创建新目录");Mypath.mkdir();}

elseSystem.out.println("目录已存在");

FileMyfile1=newFile(Mypath,"myfile1.txt");

FileMyfile2=newFile(Mypath,"myfile2.txt");

FileMyfile3=newFile(Mypath,"myfile3.txt");

try{Fout=newFileOutputStream(Myfile1);

Fin=newFileInputStream(Myfile1);

Dout=newDataOutputStream(newFileOutputStream(Myfile2));

Din=newDataInputStream(newFileInputStream(Myfile2));

PWout=newPrintWriter(newFileWriter(Myfile3));

RAread=newRandomAccessFile(Myfile3,"r");

}catch(FileNotFoundExceptione)

{System.out.println("文件未找到"+e.toString());}

Stringstr;

intnum1;

BufferedReaderbuf;

buf=newBufferedReader(newInputStreamReader(System.in));

System.out.print("请输入一个小于255整型数:

");

while(!

(str=buf.readLine()).equalsIgnoreCase("q"))

{System.out.print("请输入另一个小于255整型数,按Q结束:

");

num1=Integer.parseInt(str);

Fout.write(num1);

}Fout.close();

System.out.println("你刚输入的数据是:

");

while((x=Fin.read())!

=-1)

{System.out.println(x);

}Fin.close();

System.out.print("请输入int范围内整型数:

");

while(!

(str=buf.readLine()).equalsIgnoreCase("q"))

{System.out.print("请输入另一个整型数,按Q结束:

");

num1=Integer.parseInt(str);

Dout.writeInt(num1);

}Dout.close();

intleng=Din.available()/4;

intxxx=0;

while(xxx

{xxx++;

x=Din.readInt();

System.out.println(x);

}Din.close();

System.out.print("请输入第一个字符串:

");

while((str=buf.readLine())!

=null)

{System.out.print("请输入另一个字符串,按Ctrl+Z结束:

");

PWout.println(str);

}PWout.close();

RAread.seek(0);

while(RAread.getFilePointer()

{System.out.println(RAread.readLine());

}RAread.close();

System.out.println("完成");

}//main结束

}//class结束

运行的结果:

创建新目录

请输入一个小于255整型数:

6

请输入另一个小于255整型数:

8

请输入另一个小于255整型数:

9

请输入另一个小于255整型数:

q

你刚才输入的数据是:

6

8

9

请输入int范围内整型数:

12

请输入另一个整型数23

请输入另一个整型数90

请输入另一个整型数Q

12

23

90

请输入第一个字符串:

a

请输入另一个字符串,按Ctrl+Z结束:

b

请输入另一个字符串,按Ctrl+Z结束:

a

b

完成

【思考问题】

1本程序共用到哪几种流式文件?

都用于做什么?

答:

文件输入输出流:

FileInputStream和FileOutputStream;数据输入输出流:

DataOutputStream和DataInputStream;

2运行完程序后,请用“我的电脑”找到创建的文件,并分别打开文件看其内容,你看到的是你输入的数据吗?

答:

myfile1.txt和myfile2.txt不是,myfile3.txt是的

3将创建输入流对象Fin放在输出流Fout前(或用Din与Dout),看发生什么?

答:

结果没变化

4对第一种流式文件,请分别输入:

值>255、值<0的情况进行观察;并且对照第二种情况输入同样数据,你得出什么结论?

答:

FileInputStream和FileOutputStream是字节流类型,数值的范围是:

0到255

5对第二种流式文件判断文件占用字节的长度用available()方法,而此处用intleng=Din.available()/4;为什么除以4?

答:

返回下一次对此输入流调用的方法可以不受阻塞的从此输入流读取(或跳过)的估计剩余字节数

2.按照第1题的内容,三种数据写到三个文件中,写入后然后读出校验。

把所有其它流式文件全部改用随机流式文件来实现。

importjava.io.*;

publicclassEx7_2{

publicstaticvoidmain(Stringargs[])throwsIOException{

FileMypath;

RandomAccessFileFin=null;

PrintWriterFout=null;

RandomAccessFileDin=null;

PrintWriterDout=null;

PrintWriterPWout=null;

RandomAccessFileRAread=null;

intx=0;

Mypath=newFile("f:

\\aaa");

if(!

Mypath.exists()){

System.out.println("创建新目录");

Mypath.mkdir();//创建目录

}else

System.out.println("目录已存在");

FileMyfile1=newFile(Mypath,"myfile1.txt");

FileMyfile2=newFile(Mypath,"myfile2.txt");

FileMyfile3=newFile(Mypath,"myfile3.txt");

try{

Fout=newPrintWriter(newFileWriter(Myfile1));

Fin=newRandomAccessFile(Myfile1,"r");

Dout=newPrintWriter(newFileWriter(Myfile2));

Din=newRandomAccessFile(Myfile2,"r");

PWout=newPrintWriter(newFileWriter(Myfile3));

RAread=newRandomAccessFile(Myfile3,"r");

}catch(FileNotFoundExceptione){

System.out.println("文件未找到"+e.toString());

}

Stringstr;

intnum1;

BufferedReaderbuf;

buf=newBufferedReader(newInputStreamReader(System.in));

System.out.println("请输入一个小于255整型数:

");

while(!

(str=buf.readLine()).equalsIgnoreCase("q")){//以q或Q

System.out.print("请输入另一个小于255整型数:

");

num1=Integer.parseInt(str);

Fout.write(num1);

}

Fout.close();

System.out.println("你刚才输入的数据是:

");

while((x=Fin.read())!

=-1){

System.out.println(x);

}Fin.close();

System.out.print("请输入int范围内整型数:

");

while(!

(str=buf.readLine()).equalsIgnoreCase("q")){

System.out.print("请输入另一个整型数");

num1=Integer.parseInt(str);

Dout.write(num1);

}Dout.close();

intleng=(int)Din.length();

intxxx=0;

while(xxx

xxx++;

x=Din.read();

System.out.println(x);

}

Din.close();

System.out.print("请输入第一个字符串:

");

while((str=buf.readLine())!

=null)

{System.out.print("请输入另一个字符串,按Ctrl+Z结束:

");

PWout.println(str);

}PWout.close();

//seek(longpos)设置此文件开头测量到的文件指针偏移量,

//在该位置发生下一个读取或写入操作。

//偏移量的设置可能会超出文件末尾。

偏移量的设置超出文件末尾不会改变文件的长度。

//只有在偏移量的设置超出文件末尾的情况下对文件进行写入才会更改其长度。

RAread.seek(0);

while(RAread.getFilePointer()

{System.out.println(RAread.readLine());

}RAread.close();

System.out.println("完成");

}//main结束//class结束

}

 

【思考问题】

1注意创建随机文件对象对文件原有内容是清除还是保留?

这一点是与其它流式文件很明显的特点,你怎样验证它?

答:

清除,往同一个文件里写东西。

2修改程序要求每次重新运行不覆盖原内容,新的数据填加在文件尾,然后读出校验。

importjava.io.*;

publicclassEx7_2{

publicstaticvoidmain(Stringargs[])throwsIOException{

FileMypath;

RandomAccessFileFin=null;

PrintWriterFout=null;

RandomAccessFileDin=null;

PrintWriterDout=null;

PrintWriterPWout=null;

RandomAccessFileRAread=null;

intx=0;

Mypath=newFile("f:

\\aaa");

if(!

Mypath.exists()){

System.out.println("创建新目录");

Mypath.mkdir();//创建目录

}else

System.out.println("目录已存在");

FileMyfile1=newFile(Mypath,"myfile1.txt");

FileMyfile2=newFile(Mypath,"myfile2.txt");

FileMyfile3=newFile(Mypath,"myfile3.txt");

try{

Fout=newPrintWriter(newFileWriter(Myfile1));

Fin=newRandomAccessFile(Myfile1,"r");

Dout=newPrintWriter(newFileWriter(Myfile2));

Din=newRandomAccessFile(Myfile2,"r");

PWout=newPrintWriter(newFileWriter(Myfile3));

RAread=newRandomAccessFile(Myfile3,"r");

}catch(FileNotFoundExceptione){

System.out.println("文件未找到"+e.toString());

}

Stringstr;

intnum1;

BufferedReaderbuf;

buf=newBufferedReader(newInputStreamReader(System.in));

System.out.println("请输入一个小于255整型数:

");

while(!

(str=buf.readLine()).equalsIgnoreCase("q")){//以q或Q

System.out.print("请输入另一个小于255整型数:

");

num1=Integer.parseInt(str);

Fout.write(num1);

}

Fout.close();

System.out.println("你刚才输入的数据是:

");

while((x=Fin.read())!

=-1){

System.out.println(x);

}Fin.close();

System.out.print("请输入int范围内整型数:

");

while(!

(str=buf.readLine()).equalsIgnoreCase("q")){

System.out.print("请输入另一个整型数");

num1=Integer.parseInt(str);

Dout.write(num1);

}Dout.close();

//返回下一次对此输入流调用的方法可以不受阻塞地从此输入流读取(或跳过)的估计剩余字节数。

intleng=(int)Din.length();

intxxx=0;

while(xxx

xxx++;

x=Din.read();

System.out.println(x);

}

Din.close();

System.out.print("请输入第一个字符串:

");

while((str=buf.readLine())!

=null)

{System.out.print("请输入另一个字符串,按Ctrl+Z结束:

");

PWout.println(str);

}PWout.close();

//seek(longpos)设置此文件开头测量到的文件指针偏移量,

//在该位置发生下一个读取或写入操作。

//偏移量的设置可能会超出文件末尾。

偏移量的设置超出文件末尾不会改变文件的长度。

//只有在偏移量的设置超出文件末尾的情况下对文件进行写入才会更改其长度。

RAread.seek(0);

while(RAread.getFilePointer()

{System.out.println(RAread.readLine());

}RAread.close();

System.out.print("请输入第一个字符串:

");

while((str=buf.readLine())!

=null)

{System.out.print("请输入另一个字符串,按Ctrl+Z结束:

");

PWout.println(str);

}PWout.close();

RAread.seek(RAread.length());

while(RAread.getFilePointer()

{System.out.println(RAread.readLine());

}RAread.close();

System.out.println("完成");

}//main结束//class结束

}

 

3修改程序如果只创建一个文件,三种键盘输入内容都放在同一个文件里,并读出校验。

importjava.io.*;

publicclassEx7_2{

publicstaticvoidmain(Stringargs[])throwsIOException{

FileMypath;

RandomAccessFileFin=null;

PrintWriterFout=null;

RandomAccessFileDin=null;

PrintWriterDout=null;

PrintWriterPWout=null;

RandomAccessFileRAread=null;

intx=0;

Mypath=newFile("f:

\\aaa");

if(!

Mypath.exists()){

System.out.println("创建新目录");

Mypath.mkdir();//创建目录

}else

System.out.println("目录已存在");

FileMyfile1=newFile(Mypath,"myfile1.txt");

FileMyfile2=newFile(Mypath,"myfile1.txt");

FileMyfile3=newFile(Mypath,"myfile1.txt");

try{

Fout=newPrintWriter(newFileWriter(Myfile1));

Fin=newRandomAccessFile(Myfile1,"rw");

Dout=newPrintWriter(newFileWriter(Myfile2));

Din=newRandomAccessFile(Myfile1,"rw");

PWout=newPrintWriter(newFileWriter(Myfile3));

RAread=newRandomAccessFile(Myfile1,"rw");

}catch(FileNotFoundExceptione){

System.out.println("文件未找到"+e.toString());

}

Stringstr;

intnum1;

BufferedReaderbuf;

buf=newBufferedReader(newInputStreamReader(System.in));

System.out.println("请输入一个小于255整型数:

");

while(!

(str=buf.readLine()).equalsIgnoreCase("q")){//以q或Q

System.out.print("请输入另一个小于255整型数:

");

num1=Integer.parseInt(str);

Fout.write(num1);

}

Fout.close();

System.out.println("你刚才输入的数据是:

");

while((x=Fin.read())!

=-1){

System.out.println(x);

}Fin.close();

System.out.print("请输入int范围内整型数:

");

while(!

(str=buf.readLine()).equalsIgnoreCase("q")){

System.out.print("请输入另一个整型数");

num1=Integer.parseInt(str);

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

当前位置:首页 > PPT模板 > 商务科技

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

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