第九章输入与输出.docx
- 文档编号:11223408
- 上传时间:2023-02-25
- 格式:DOCX
- 页数:20
- 大小:18.07KB
第九章输入与输出.docx
《第九章输入与输出.docx》由会员分享,可在线阅读,更多相关《第九章输入与输出.docx(20页珍藏版)》请在冰豆网上搜索。
第九章输入与输出
第九章:
流式输入与输出
EX1:
(JAVA2实例解析P69)难度等级:
B
使用类返回当前目录下的所有文件(包括子目录),对于文件,列出文件的长度
importjava.io.*;
publicclassDir
{
publicstaticvoidmain(Stringargs[])
{
FileflDir=newFile(“.”);
System.out.println(“Filein”+flDir.getAbsolutePath());//返回文件的绝对路径
StringstrFiles[]=flDir.list();//返回文件对象所指目录下的文件列表
intintDirCount=0,intFileCount=0;
longlngSize=0;
For(inti=0;i { FileflTemp=newFile(strFiles[i]); if(flTemp.exists())//判断文件是否存在 { if(flTemp.isFile())//判断是否为文件 { System.out.println(strFile[i]+”\t”+flTemp.length());//返回文件的长度 intFileCount++; lngSize=lngSize+flTemp.length(); } if(flTemp.isDirectory())//文件对象指定的文件是否为目录 { System.out.println(strFiles[i]+”\t
intDirCount++;
}
}
}
System.out.println(intFileCount+”file(s)\t”+lngSize+”bytes’);
System.out.println(intDirCount+”dir(s)”);
}
}
EX2:
(java实例解析P73)难度等级:
A
编写一个程序,把一个文件复制到指定的另一文件。
并能判断存在的错误。
importjava.io.*;
classCopy
{
publicstaticvoidmain(Stringargs[])
{
if(args.length<2)
{
System.out.println(“Usage:
Copy[SourceFilename][ObjectFilename].”);
}
else
{
FilefSource=newFile(args[0]);//定义原文件
booleanisOK=true;
if(!
Source.exists())
{
System.out.println(“SourceFile”+args[0]+”isnotaexist!
”);
isOK=false;
}
if(isOK&&!
Source.isFile())
{
System.out.println(“SourceFile”+args[0]+”isnotaexist!
”);
}
if(isOK&&!
Source.canRead())//判断原文件是否可读
{
System.out.println(“cannotread”+“SourceFile”+args[0]+”!
”);
}
FilefObject=newFile(args[1]);//定义目标文件
try
{
if(isOK&&fObject.exists())
{
System.out.println(“ObjectFile”+args[1]+”isalreadyexist!
”);
System.out.println(“Overwrite?
[y/n]”);
intch=System.in.read();//读入数据
if(ch==’n’||ch==’N’)
{
isOK=false;
}
}
if(isOK)
{
FileInputStreamfisSource=newFileInputStream(args[0]);
FileOutputStreamfosObject=newFileOutputStream(args[1]);
Systrm.out.println(“Copyfilefrom”+args[0]+”to”+args[1]+”…”);
while(fisSource.available()>0)//是否输入流还有字节
{
inttemp=fisSource.read();//输出
fosObjece.write(temp);//输入
}
fisSource.close();
fosObject.close();
System.out.println(“FileCopyedSuccessfully!
”);
}
}
catch(IOExceptione)
{
System.out.println(e);
}
}
}
}
EX3:
(java2实例解析P79)难度等级:
B
建立一个文件,并对文件进行查找替代操作
importjava.io.*;
publicclassRandomFileIO
{
publicstaticvoidmain(Stringargs[])
{
try
{
RanddomAccessFileraFile=newRandomAccessFile(“employee”,”rw”);
System.out.println(“\”employee\”);
CreateFile(rafFile);
OutputFile(rafFile);
ReplaceInFile(rafFile,”zhaoliu”,20);
OutputFile(rafFile);
rafFile.close();
}
catch(FileNotFoundExceptione)
{
System.out.println(“Error!
”+e);
}
catch(IOExceptione)
{
System.out.println(“Error”+e);
}
}
staticvoidReplaceInFile(RandomAccessFilerafFile,StringstrName,intintAge)
{
try
{
rafFile.seek(0L);//设置下次读取文件的其始位置
System.out.println(“查找”+strName+”的记录!
”);
StringstrTempName;
longlngInsertPos;
do
{
rafFile.readLong();
rafFile.readChar();
lngInsertPos=rafFile.getFilePointer();//返回该文件的当前文件的位置
rafFile.readInt();
rafFile.readChar();
strTempName=rafFile.readLine();//读取文件的下一行文本
}
while(strTempName.startsWith(strName)==false)
rafFile.seek(lngInsertPos);//设置下次读取的位置
rafFile.writeInt(intAge);
System.out.println(“replaceSucced!
”);
}
catch(IOExceptione)
{
System.out.println(“FileAccessError!
”+e);
}
}
//该函数进行文件的创建的工作
staticvoidCreateFile(RandomAccessFilerafFile)
{
longlngNumbers[]={10001L,10002L,10003L,10004L,10005L};
StringstrNames[]={“zhangsan”,”lisi”,”wangwu”,”zhaoliu”,”qianqi”};
intintAge[]={20,21,26,18,30};
try
{
for(inti=0;i { rafFile.writeLong(lngNumbers[i]); rafFile.writeChar(‘\t’); rafFile.writeInt(intAge[i]); rafFile.writeChar(‘\t’); rafFile.writeBytes(strNames[i]+”\n”); } } catch(IOExceptione) { System.out.println(“FileAccessError! “+e); } } staticvoidOutputFile(RandomAccessFilerafFile) { try { Systrm.out.println(“”); rafFile.seek(0); While(true) { longlngNumber=rafFile.readLong(); rafFile.readChar(); intstr=rafFile.readInt(); rafFile.readChar(); Systrm.out.println(lngNumber+”\t”+str+”\t”+rafFile.readLine()); } } catch(EOFExceptione) { System.out.println(“Reachtheendofthefile! ”+e); } catch(IOExceptione) { System.out.println(“FileAccessError! ”+e); } } } EX4: (java2实例解析P83)难度等级: A 编写一个程序,从键盘读入字符,以#结束,把读入的数据写入文件里。 importjava.io.*; publicclassCreateFile { publicstaticvoidmain(Stringargs[]) { StringstrFilename; DataInputStreamstdIn=newDataInputStream(new BufferedInputStream(System.in)); //新建一个缓存输入流 try//设置输出的文件名 { if(args.length==0) { System.out.println(“PleaseInputthFileName: ”); strFilename=stdIn.readLine(); } else { strFilename=args[0]; } DataOupputStreamNewFile=newDataOuptputStream( newBufferedOupputStream( newFileOutputStream(strFilename))); intstrTemp; System.out.println(“***Pleaseimputthecontext,Endwhtha\’#\’***”); strTemp=stdIn.read();//读入 while(strTemp! =’#’) { NewFile.write(strTemp); strTemp=stdIn.read(); } NewFile.close();//关闭输出流 } catch(IOExceptione) { e.pritnStackTrace(); } } } EX5: (java2实例解析P87)难度等级: C 自定义过滤流,对文件进行加密,把n代替a,o代替b,依次类推 importjava.io.*; publicclassSafeCode { publicstaticvoidmain(Stringargs[]) { SafeCodeFiltersafeCodeFilter=newSafeCodeFilter(); intintTemp; //对文件origin.txt进行加密,存放在mid.txt try { MyFilterInputStreamrfsIn=newMyFilterInputStream(newFileInputStream (“origin.txt”),safeCodeFilter); FileOutputStreamrfsOut=newFileOutputStream(“mid.txt”); While(intTemp=rfsIn.read()! =-1)//继续加密的条件 { rfsOut.write(intTemp); } rfsIn.close();//加密完毕之后…… rfsOut.close(); } catch(FileNotFoundExceptione) { Systrm.out.println(e); } catch(IOExceptione) { System.out.println(e); } //对文件mid.txt进行解密,存放在result.txt try { FileInptStreamrfsIn=newFileInputStream(“mid.txt”); MyFilterOutputStreamrfsOut=newMyFilterOutputStream( NewFileOutputStream(“result.txt”),safeCodeFilter); While(intTemp=rfs.read()! =-1)//条件 { rfsOut.write(intTemp); rfsOut.close(); } catch(FileNotFoundExceptione) { System.out.println(e); } catch(IOExceptione) { System.out.println(e); } } } classMyFilterInputStreamextendsFilterInputStream { SafeCodeFiltersafeCodeFilter; MyFilterInputStream(InputStreamin,SafeCodeFilterfilter); { super(in); safeCodeFilter=filter; } publicintread()throwsIOException { intintTemp=in.read(); if(intTemp! =-1) { intTemp=safeCodeFilter.filter(intTemp); } returnintTemp; } classMyFilterOutpurStreamextendsFilterOutputStream { SafeCodeFiltersafeCodeFilter; MyFilterOutputStream(OutputStreamout,SafeCodeFilterfilter); { super(out); safeCodeFilter=filter; } publicvoidwrite(intintTemp)throwsIOException { intTemp=safeCodeFilter.filter(intTemp); out.write(intTemp); } } //过滤器 classSafeCodeFilter { publicintfilter(intintTemp) { intc=intTemp; if(intTemp! =-1) { if(intTemp>’a’&&intTemp<’z’) { c=’a’+((intTemp-‘a’)+13)%26;//加密公式 } if(intTemp>’A’&&intTemp<’Z’) { c=’A’+((intTemp-‘A’)+13)%26;//加密公式 } } returnc; } } EX6: (java2实例解析P90)难度等级: B 编写一个程序,两个线程通过一个管道通信,线程Sender通过管道输出流,将文件发送出去,线程Receiver通过管道接受发送的数据,并写入文件ReceiverFile中。 importjava.io.*; publicclassThreadCommunication { publicstaticvoidmain(Stringargs[]) { try { PipedInputStreampisIn=newPipedInputStream(); PipedOutputStreamposOut=newPipedOutputStream()l posOut.connect(pisIn);//管道建立连接 Sendersender=newSender(posOut,”SendFile”); Receiverreceiver=newReceiver(pisIn,”ReceiverFile”); Sender.start(); Receiver.start(); } catch(IOExceptione) { System.out.println(“Error! ”+e); } } } classSenderextendsThread { PipedOutputStreamposOut; Filefile; Sender(PipedOutputStreamposOut,Stringfile); { this.posOut=posOut; this.file=newFile(file); } publicvoidrun() { try { FileInputStreamfs=newFileInputStream(file); intdata; data=fs.read(); While(data! =-1) { posOut.write(data);//文件输出 data=fs.read(); } pos.Out.close();//关闭管道 } catch(IOExceptione) { System.out.println(“senderError! ”+e); } } } classReceiverextendsThread { PipedInputStreampisIn; Filefile; Receiver(PipedInputStreampisIn,Stringfile) { this.pisIn=pisIn; this.file=newFile(file); } publicvoidrun() { try { FileOutputStreamfs=newFileOutputStream(file); intdata; data=pisIn.read(); while(data! =-1) { fs.write(data);//接受数据 data=pisIn.read(); } pisIn.close();//关闭管道 } catch(IOExceptione) { System.out.println(“ReceiverErroe! ”+e); } } } EX7: (JAVA2实例解析P93)难度等级: B 顺序输入流SequenceInputStream,可连接多个输入流,依次打开每个输入流,读取数据,然后关闭流。 importjava,io.*; importjavautil.*; classFileConcatenate { publicstaticvoidmain(Stringargs[]) { FileListfileList=newFileList(args); try { SequenceInputStreamsisIn=newSequenceInputStream(fileList); intdata; data=sisIn.read();//读取数据 while(data! =-1) { data=sisIn.read(); System.out.println(data); } sisIn.close(); } catch(IOExceptione) { System.out.println(“Error! ”+e); } } } //定义枚举接口 classFileListimplementsEnumeration { StringstrFiles[]; intintCurrnetFile; FileList(StringstrFiles[]) { this.strFiles=strFiles; intCurrentFile=0; } publicbooleanhasMoreElements()//调用函数,判断是否还有文件 { if(intCurrentFile { returntrue; } else returnfalse; } publicObjectnextElement()//调用函数,读取下一个文件 { try { if(hasMoreElenents()) { intCurrentFile++; returnnewFileInputStream(strFiles[intCurrentFile-1]);//数组下标 } else { returnnull; } } catch(IOExceptione) { System.out.println(“Error! ”+e); returnnull; } } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第九 输入 输出
![提示](https://static.bdocx.com/images/bang_tan.gif)