实验8 File类与输入输出流文档格式.docx
- 文档编号:21839087
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:20
- 大小:140.08KB
实验8 File类与输入输出流文档格式.docx
《实验8 File类与输入输出流文档格式.docx》由会员分享,可在线阅读,更多相关《实验8 File类与输入输出流文档格式.docx(20页珍藏版)》请在冰豆网上搜索。
//源文件,必须存在
Filefd=newFile("
\\summer.jpg"
//目标文件,可以不存在
FileInputStreamfis=【newFileInputStream(fs);
】//建立连接文件fs的输入流
FileOutputStreamfos=【newFileOutputStream(fd)】;
//建立连接文件fd的输出流
【byte[]b=newbyte[1024];
】//创建大小为1024的字节数组
while(fis.read(b)!
=-1){
【fos.write(b);
】//将字节数组b的内容写入目标文件
}
【fos.close();
】//fos关闭;
【fis.close();
】//fis关闭;
}
第二题:
拷贝文本文件(字符流)
\\Hello.txt"
\\Hello.cpy"
FileReaderfis=【newFileReader(fs);
FileWriterfos=【newFileWriter(fd);
】//建立连接文件fd的输出流
【char[]b=newchar[1024];
】//创建大小为1024的字符数组
】//将字符数组b的内容写入目标文件
】//fos关闭;
】//fis关闭;
2.读取电脑上c:
\ProgramFiless\java\jre8\lib下面所有.jar的文件的信息:
文件名、大小、上一次修改的时间
3.(10分)利用随机函数产生30个0~100之间的整数,写入到文件Myfile.txt中,并在Myfile的最后添上你的学号、姓名;
然后再从该文件中读取这些整数并以升序显示。
4.(10分)使用RandomAccessFile类,将Myfile.txt的内容逆序读出。
5.(10分)让用户从键盘输入信息,建立10个Account的对象,将它们写入到文件fileOfAccount.dat中,然后逐个读取出来。
6.(30分)设计一个文件管理程序docuToAcco.java,实现如下功能:
(1)事先录入n个Account的账户数据,写入一个文本文件(同一个账户各数据之间用空格隔开,不同的账户的数据用换行符隔开)。
(2)从文件中读取数据并生成账户对象,用HashSet<
Student>
保存(提示:
读数据利用BufferedRead类;
重复数据不能放入集合,需要重写equals和hashCode方法。
方法原型为:
publicbooleanequals(Objectobj){}publicinthashCode(){})。
(3)遍历并显示账户信息(必须使用Iterator<
遍历)。
例如:
文件数据为:
(注意:
必须有一个数据是重复的)
账户号姓名余额性别出生日期
80000001zhangsan1000.00true2009-01-02
80000003lisi2000.00false2008-11-02
80000005wangwu3000.00true2007-01-20
80000023chenliu5000.00false2008-07-02
80000045huangjiang1234.00true2006-03-09
输出结果可能为:
(HashSet是无序的)
7.(10分)统计一个纯英文文件中的字符数、单词数以及行数。
单词以空格分隔,文件名请作为命令行参数传递,例如你的程序名是calculate.java,被统计的文本是Account.java,那么在命令行输入的命令是:
C:
\>
javacalculateAccount.java
输出:
FileAccount.java
2001characters
150words
35lines
三、实验过程及结果
2.
代码如下:
packagecom.bingo.test;
importjava.io.File;
importjava.text.SimpleDateFormat;
importjava.util.Date;
publicclassDemo2_Test{
publicstaticvoidmain(String[]args){
//根据javajre实际存放目录
Stringpath="
\\Develop\\Java\\jre1.8\\lib"
;
Filefile=newFile(path);
File[]list=file.listFiles();
for(Filefile2:
list){
Stringname=file2.getName();
if(name.endsWith("
.jar"
)){
longtime=file2.lastModified();
SimpleDateFormatsdf=newSimpleDateFormat("
yyyy/MM/ddHH:
mm:
ss"
Stringstrtime=sdf.format(newDate(file2.lastModified()));
System.out.println("
文件名:
"
+name);
大小:
+file2.length());
最近修改时间:
+strtime);
-----------"
}
}
}
运行结果截图如下:
3.
importjava.io.DataInputStream;
importjava.io.DataOutputStream;
importjava.io.FileInputStream;
importjava.io.FileOutputStream;
importjava.io.IOException;
importjava.util.Arrays;
importjava.util.Random;
publicclassDemo3_Test{
publicstaticvoidmain(String[]args)throwsIOException{
Randomr=newRandom();
FileOutputStreamfos=newFileOutputStream("
Myfile.txt"
DataOutputStreamdos=newDataOutputStream(fos);
for(inti=0;
i<
30;
++i){
dos.writeInt(r.nextInt(101));
dos.writeUTF("
2014040329"
杨立滨"
FileInputStreamfis=newFileInputStream("
DataInputStreamdis=newDataInputStream(fis);
int[]arr=newint[30];
for(inti=0;
arr[i]=dis.readInt();
Arrays.sort(arr);
for(inti:
arr){
System.out.println(i);
dis.close();
dos.close();
4.代码如下:
importjava.io.RandomAccessFile;
publicclassDemo4_Test{
Filefile=newFile("
RandomAccessFileraf=newRandomAccessFile(file,"
r"
longlen=raf.length();
while(len>
0){
len--;
raf.seek(len);
charinteger=(char)raf.readByte();
System.out.print(integer);
5.代码如下:
importjava.io.ObjectInputStream;
importjava.io.ObjectOutputStream;
importjava.io.OutputStream;
importjava.io.Serializable;
importjava.util.Scanner;
publicclassDemo5_Test{
Scannersc=newScanner(System.in);
ObjectInputStreamois=null;
ObjectOutputStreamoos=null;
try{
Filef=newFile("
fileOfAccount.dat"
OutputStreamout=newFileOutputStream(f);
oos=newObjectOutputStream(out);
for(inti=0;
10;
第["
+(i+1)+"
]个账户:
id:
Stringid=sc.nextLine();
姓名:
Stringname=sc.nextLine();
余额:
doublebalance=sc.nextDouble();
sc.nextLine();
Accountacc=newAccount(id,name,balance);
oos.writeObject(acc);
ois=newObjectInputStream(newFileInputStream("
));
Accountacc=(Account)ois.readObject();
System.out.println(acc);
}catch(Exceptione){
e.printStackTrace();
}finally{
//关流释放资源
if(oos!
=null){
try{
oos.close();
}catch(IOExceptione){
e.printStackTrace();
}
if(ois!
ois.close();
classAccountimplementsSerializable{
privateStringid;
privateStringname;
privatedoublebalance;
publicAccount(Stringid,Stringname,doublebalance){
super();
this.id=id;
this.name=name;
this.balance=balance;
publicStringgetId(){
returnid;
publicvoidsetId(Stringid){
publicStringgetName(){
returnname;
publicvoidsetName(Stringname){
publicdoublegetBalance(){
returnbalance;
publicvoidsetBalance(doublebalance){
@Override
publicStringtoString(){
return"
Account[id="
+id+"
name="
+name+"
balance="
+balance+"
]"
运行效果截图如下:
6.代码如下:
packagecom.bingo.jdbc.test;
importjava.io.BufferedReader;
importjava.io.FileReader;
importjava.io.OutputStreamWriter;
importjava.io.PrintWriter;
importjava.util.ArrayList;
importjava.util.HashSet;
publicclassdocuToAcco{
privatefinalstaticStringfileName="
D:
\\docuToAcco.txt"
privatefinalstaticStringtype="
UTF-8"
publicstaticvoidmain(String[]args)throwsIOException{
read();
publicstaticvoidwrite()throwsIOException{
Stringname;
Stringid;
doublebalance;
Stringsex;
Stringbirth;
ArrayList<
Account>
list=newArrayList<
>
();
System.out.println("
请输入账号ID:
while(!
(id=sc.next()).equals("
0"
System.out.println("
请输入账号姓名:
name=sc.next();
请输入账号余额:
balance=sc.nextDouble();
请输入账号性别:
sex=sc.next();
请输入账号生日:
birth=sc.next();
list.add(newAccount(id,name,balance,sex,birth));
FileOutputStreamfos=newFileOutputStream(newFile(fileName));
OutputStreamWriterosw=newOutputStreamWriter(fos,type);
PrintWriterpw=newPrintWriter(osw,true);
pw.println("
账户号姓名余额性别出生日期"
for(Accountitem:
pw.println(item);
pw.close();
osw.close();
fos.close();
publicstaticvoidread()throwsIOException{
Scannersc=newScanner(newBufferedReader(newFileReader(fileName)));
HashSet<
read=newHashSet<
Stringname;
sc.nextLine();
while(sc.hasNext()){
id=sc.next();
name=sc.next();
read.add(newAccount(id,name,balance,sex,birth));
read){
System.out.println(item);
sc.close();
classAccount{
privateStringsex;
privateStringbirth;
publicStringgetSex(){
returnsex;
publicvoidsetSex(Stringsex){
this.sex=sex;
publicString
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验8 File类与输入输出流 实验 File 输入输出