2019年第9章IO流与文件_第1页
2019年第9章IO流与文件_第2页
2019年第9章IO流与文件_第3页
2019年第9章IO流与文件_第4页
2019年第9章IO流与文件_第5页
已阅读5页,还剩64页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第9章I/O流与文件2本章内容输入流输出流文件39.1文件与流的概念文件的根本概念文件:存储在磁盘上数据的集合,具有“永久性”文件中的数据以连续的字节或字符形式存在,并没有明显的构造组成文件的字节序列或字符序列分别被称为字节流或字符流流〔Stream〕:在计算机的输入与输出之间的数据序列;按确定挨次排列的数据的集合Java把不同的数据源与程序间的数据传输都抽象表述为“流”Java中的数据流有字节流〔位流〕和字符流之分Java命名惯例:但凡以InputStream或OutputStream结尾的类均为字节流但凡以Reader或Writer结尾的类均为字符流。流的根本概念Reader类Writer类InputStream类OutputStream类1字符=2字节就流的运动方向而言,流可分为:输入流〔inputstream〕:代表流入计算机的数据序列输出流〔outputstream〕:代表从计算机流出的数据序列输入流:程序翻开数据源上的一个流(文件或内存等),然后按挨次读入这个流中的数据输出流:程序翻开一个目的地的流,然后按挨次从程序向这个目的地输出数据输入和输出的方向是以程序为基准的通常,也把从输入流中输入数据到程序中称为读数据〔read〕,反之,从程序中将数据输出到输出流中称为写数据(write)具体步骤一般为:翻开一个流while(数据存在时)读数据或写数据关闭流9.2字节输入/输出流派生自InputStream和OutputStream常用的字节流主要有:InputStream和OutputStreamFileInputStream和FileOutputStreamDataInputStream和DataOutputStreamObjectInputStream和ObjectOutputStreamBufferedInputStream和BufferedOutputStreamByteArrayInputStream和ByteArrayOutputStreamJava借助Java.io包实现输入输出InputStream类层次InputStreamFileInputStreamPipedInputStreamObjectInputStreamSequenceInputStreamFilterInputStreamStringBufferInputStreamByteArrayInputStreamDataInputStreamBufferedInputStreamPushbackInputStreamLineNumberInputStream9.2.1InputStream和FileInputStream抽象类java.io.InputStream是全部字节输入流类的父类,定义了以字节为单位读取数据的根本方法,并在其子类中进展了分化和实现三个根本read方法:intread()//从输入流读取下一个字节并返回。返回值的范围从0到255,假设已经到达数据流的结尾,则返回-1intread(byte[]buffer)//从输入流中读取假设干字节放进数组buffer中,并返回读到的字符数,最多可读取和buffer长度相等的字符数,假设读取失败则返回-1intread(byte[]buffer,intoffset,intlength)//从输入流中读length个字节到数组buffer中。offset是写入数组的位置〔位移〕抽象方法11其它方法:voidclose//关闭输入流,释放相关系统资源intavailable//返回输入流中可读取的字节数skip(longn)//跳过流中假设干字节数,返回实际跳过的字节数booleanmarkSupported//是否支持标记和复位操作voidmark(intreadlimit)//在流中当前位置作标记voidreset//返回最近标记的位置不执行任何操作【例9-1】InputStream类的使用 import; import; publicclassInputStreamUse{ publicInputStreamUse(InputStreamin){ try{ while(true){ inti=in.read; charc=(char)i; System.out.print(c); } }catch(IOExceptione){ System.out.print(e); e.printStackTrace(); } } publicstaticvoidmain(String[]args){ newInputStreamUse(System.in); } } (“System.in引用的对象的类是:“+System.in.getClass.getName);该语句执行后的输出为: System.in引用的对象的类是:java.io.BufferedInputStream多态:父类引用指向子类对象很有可能消逝特殊,最好处理FileInputStream类FileInputStream类〔文件输入流〕是InputStream类的子类它们所供给的方法可以挨次读/写本地主机上的文件对文件内容的操作步骤如下:创立文件对应的输入/输出或者读写器的实例对象,以猎取相关的资源文件。如所需内存空间以及文件的访问权限对文件进展读〔输入〕/写〔输出〕操作调用close方法,关闭文件,释放所占用的系统资源【例9-2】FileInputStream类的使用〔 import; importjava.io.*; publicclassFileInputStreamUse{ publicFileInputStreamUse{ try{ FileInputStreamf=newFileInputStream(“数字.txt“); inti; intb=f.read();//读取文件中的数据 for(i=0;b!=-1;i++){ System.out.print((char)b); b=f.read;} ; (“文件字节数为“+i); f.close; }catch(IOExceptione){ System.err.println(e); e.printStackTrace(); } } publicstaticvoidmain(Stringargs[]){ newFileInputStreamUse;} }“数字.txt”是和该类在同一名目下的文本文件名和FileOutputStream字节输出流抽象类OutputStream是全部字节输出流类型的抽象父类,为其它输出字节流子类供给了一些根本方法和标准接口三个根本的write方法:voidwrite(intc)//写入一个字节到输出流:将c的低8位写入,无视24个高位voidwrite(byte[]buffer)//将数组buffer中的数据写入输出流voidwrite(byte[]buffer,intoffset,intlength)//将buffer数组中从第offset个字节开头,共length个字节写入输出流其它方法:voidclose//关闭输出流,释放相关系统资源voidflush//清空缓存,将全部缓冲字节写入输出流写入的数据通常先放到高速缓存(cache)里,等到达某一数量时,调用该方法将强迫数据写到预期目标OutputStream类层次OutputStreamFileOutputStreamObjectOutputStreamFilterOutputStreamByteArrayOutputStreamDataOutputStreamBufferedOutputStreamPrintStreamPipedOutputStream【例9-3】OutputStream类的使用import;importjava.io.*;publicclassOutputStreamUse{publicOutputStreamUse(OutputStreamout){Strings=“慈母手中线,游子身上衣。临行密密缝,意恐迟迟归。谁言寸草心,报得三春晖。“;byte[]b=s.getBytes();try{out.write(b);//将字节数组b写出out.flush();//将把缓存中全部内容强制输出}catch(IOExceptione){System.err.println(e);e.printStackTrace();}}publicstaticvoidmain(Stringargs[]){newOutputStreamUse(System.out);}}FileOutputStream文件输出流FileOutputStream类是OutputStream类的子类,用于向文件写入数据FileOutputStream将数据写入文件的步骤:实例化对象,猎取相关文件资源。通过FileOutputStream类的write方法把数据写入到文件中;通过flush方法强制输出调用close方法,关闭文件,释放系统资源【例9-4】FileOutputStream类的使用import;importjava.io.*;publicclassFileOutputStreamUse{publicFileOutputStreamUse{Strings=“有志者事竟成,破釜沉舟,百二秦关终属楚;苦心人天不负,卧薪尝胆,三千越甲可吞吴。“;byte[]b=s.getBytes();try{ FileOutputStreamf=newFileOutputStream(“座右铭.txt“);f.write(b);f.flush();f.close();}catch(IOExceptione){System.err.println(e);e.printStackTrace();}}publicstaticvoidmain(Stringargs[]){ newFileOutputStreamUse;}}假设文件不存在就创立该文件,否则掩盖原文件内容append为true时,使用FileOutputStream(Stringname,booleanappend)方法创立的实例在文本文件尾追加字符,而非掩盖数据字节输入流DataInputStream类和数据字节输出流DataOutputStream类供给直接读或写根本数据类型数据的方法DataInputStream能够以一种与机器无关的方式,直接从底层字节输入流读取Java根本类型和Sring类型的数据,而不必关心这个数值应当是多少个字节9.2.3DataInputStream和DataOutputStreamDataInputStream常用方法包括:publicDataInputStream(InputStreamin)publicfinalbooleanreadBooleanpublicfinalbytereadBytepublicfinalcharreadCharpublicfinaldoublereadDoublepublicfinalfloatreadFloatpublicfinalintreadIntpublicfinallongreadLongpublicfinalshortreadShortpublicfinalStringreadUTFpublicvoidclose

读入一个字符串DataOutputStream则能够直接将Java根本类型和String类型数据写出到其它的字节输出流DataInputStream常用方法包括:publicDataOutputStream(OutputStreamout)publicfinalvoidwriteByte(intv)publicfinalvoidwriteShort(intv)publicfinalvoidwriteInt(intv)publicfinalvoidwriteLong(longv)publicfinalvoidwriteFloat(floatv)publicfinalvoidwriteDouble(doublev)publicfinalvoidwriteChar(intv)publicfinalvoidwriteBoolean(booleanv)publicfinalvoidwriteChars(Strings)publicfinalintsize;//返回实际写入的字节数publicvoidflushpublicvoidcloseimport;import;import;import;publicclassDataStreamUse{publicDataStreamUse{try{FileOutputStreamfout=newFileOutputStream(“out.txt“);DataOutputStreamdfout=newDataOutputStream(fout);for(inti=0;i<6;i++)dfout.writeInt(i);dfout.close();FileInputStreamfin=newFileInputStream(“out.txt“);DataInputStreamdfin=newDataInputStream(fin);for(inti=0;i<6;i++)System.out.print(dfin.readInt+“,“);dfin.close();}catch(Exceptione){System.err.println(e);e.printStackTrace();}}publicstaticvoidmain(Stringargs[]){ newDataStreamUse;}}【例9-5】数据字节流的使用从一个流产生另一个流9.2.4ObjectInputStream和ObjectOutputStream类ObjectOutputStream和ObjectInputStream分别继承了接口ObjectOutput和ObjectInput,将数据流功能扩展到可以读写对象ObjectInputStream类和ObjectOutputStream类创立的对象被称为对象输入流和对象输出流对象输出流使用writeObject(Objectobj)方法将一个对象obj写入输出流,将对象状态保存下来(将对象保存到文件中,或者通过网络传送到其他地方)对象输入流使用readObject从源中读取一个对象到程序中,将对象状态恢复Java允许可序列化的对象通过对象流进展传输只有实现Serializable接口的类才能被序列化;Serializable接口中没有任何方法,当一个类声明实现Serializable接口时,只是说明该类参与对象序列化协议一个类假照实现了Serializable接口,那么这个类创立的对象就是所谓可序列化的对象实际上,类ObjectOutputStream和ObjectInputStream分别实现了对象的序列化和反序列化功能恢复对象状态保存对象状态序列化只能保存对象的非静态成员变量〔且保存的只是变量的值〕,而不能保存任何成员方法和静态成员变量某些对象的状态是瞬时的,无法保存,如Thread对象或流对象。对于这样的成员变量,必需用transient关键字标明。任何用transient关键字声明的成员变量都不会被保存序列化可能将对象存放到磁盘上或在网络上发送,会产生安全问题。需要保密的数据不应保存在永久介质中〔或不应简洁地不加处理地保存下来〕。为保证安全,应在这些变量前加上transient关键字有时我们想得到对象的一个“复制品”,该复制品的实体是原对象实体的拷贝。复制品实体的变化不会引起原对象实体发生变化,这样的复制品称为原对象的克隆对象或简称克隆。使用对象流很简洁得猎取一个序列化对象的克隆。我们只需将该对象写入到对象输出流,那么用对象输入流读回的对象确定是原对象的一个克隆9.2.5BufferedInputStream和BufferedOutputStream类BufferedInputStream和类BufferedOutputStream是带缓存的输入流和输出流,即缓冲流在实例化类BufferedInputStream和类BufferedOutputStream对象时,会在内存中开拓一个字节数组用来存放数据流中的数据借助字节数组,在读取或者存储数据时可以以字节数组为单位把数据读入内存,或以字节数组为单位把数据写入指定的文件中,从而大大提高数据的读/写效率类BufferedInputStream的构造方法:BufferedInputStream(InputStreamin)其中in是指定的输入流,通常是FileInputStream的实例对象。BufferedInputStream(InputStreamin,intsize)其中,in同前,size是大于0的数,用于指定缓存大小与类BufferedOutputStream的构造方法类似从一个流构造另一个流从底层流构造高级流时就会创立流链FileInputStreamf=newFileInputStream(“file.dat“);BufferedInputStreamb=newBufferedInputStream(f);DataInputStreamd=newDataInputStream(b);【例9-8】缓存流的使用import;import;import;publicclassBufferedStreamUse{privatestaticStringfileName=“毕业那年我们二十三岁.txt“;publicBufferedStreamUse{try{inti=0;intch; Dated1=newDate;//创立猎取当前时间的对象FileInputStreamf=newFileInputStream(fileName);while((ch=f.read)!=-1)i++;f.close();Dated2=newDate; longt=d2.getTime-d1.getTime; (“读取文件%s(共%d字节)\n“,fileName,i); (“不带缓存的方法需要%1$d毫秒\n“,t); i=0;d1=newDate;f=newFileInputStream(fileName);BufferedInputStreamfb=newBufferedInputStream(f);while((ch=fb.read)!=-1)i++;fb.close;d2=newDate;t=d2.getTime-d1.getTime; (“带缓存的方法需要%1$d毫秒\n“,t);}catch(Exceptione){System.err.println(e);e.printStackTrace;}}publicstaticvoidmain(Stringargs[]){ newBufferedStreamUse; }}标准的输入/输出流java.lang包的System类定义了三个静态成员变量:staticfinalInputStreamin//标准输入instaticfinalPrintStreamout//标准输出outstaticfinalPrintStreamerr//标准错误输出errin可以直接调用InputStream类供给的输入方法;out和err可以直接调用PrintStream类供给的输出方法out用于屏幕输出,常用方法有:System.out.print(Stringstr);//向屏幕输出字符串strSystem.out.println(Stringstr);//向屏幕输出字符串str后换行in用于屏幕输入,常用方法有:System.in.read//返回从键盘输入的字符System.in.read(byte[]b)//从键盘输入多个字符到数组b,并返回字符个数都可被重定向;err通常不;out会被缓冲,err不会PrintStream类PrintStream是标准的输出类,在OutputStream根底上供给了增加的功能,可以便利地输出各种类型数据〔而不仅限于byte型〕的格式化表示形式PrintStream从不抛出IOException类〔可用checkError方法检测〕构造方法:publicPrintStream(OutputStreamout);publicPrintStream(OutputStreamout,BooleanautoFlsh);//是否自动刷新36autoFlash为true时,承受自动刷新,当输出回车换行时,缓存中的数据一般会全部自动写入。默认不自动刷新将向其中写入的目标流PrintStream常用方法:publicvoidprint(booleanb);publicvoidprint(charc);publicvoidprint(longl);publicvoidprint(inti);publicvoidprint(floatf);publicvoidprint(doubled)

;publicvoidprint(Strings);publicvoidprint(Objectobj);publicvoidprintln;37将指定数据写入目标流println【例9-9】标准输入/输出流的使用importjava.io.IOException;publicclassStandardInputOutputUse{//抛出特殊交由Java虚拟机处理publicstaticvoidmain(Stringargs[])throwsIOException{(“请从键盘上输入数据:“);bytebuffer[]=newbyte[512]; intcount=System.in.read(buffer);(“通过标准的输出,输出的数据:“);for(inti=0;i<count;i++)(““+buffer[i]);//按字节方式输出buffer;for(inti=0;i<count;i++)System.out.print((char)buffer[i]);//按字符方式输出bufferSystem.out.println(“count=“+count);//实际读取的字节数}}9.3字符输入/输出流以16位的Unicode码表示的字符为根本处理单位,又称为读/写器由抽象类Reader和Writer派生常用的字符流主要有:Reader和WriterFileReader和FileWriterBufferedReader和BufferedWriter9.3.1Reader和Writer抽象类Reader和Writer只是供给了一系列用于字符流处理的方法,只能通过使用由它们派生出来的子类对象来处理字符流Reader是全部字符输入流类型的父类,其中声明白用于读取字符流的有关方法三个根本的read方法:intread//读取一个字符,返回值为读取的字符intread(charcbuf[])//读取一系列字符到数组cbuf[]中,返回值为实际读取的字符数intread(char,cbuf[],intoff,intlen)//读取len个字符,从数组cbuf[]的下标off处开头存放,返回值为实际读取的字符数抽象方法读到文件末尾时返回-1其它方法:voidclose//关闭当前字符流并释放与字符流相关的系统资源skip(longn)//略过n个字节不读取,返回实际略过的字节数目booleanmarkSupported//推断当前流是否支持做标记voidmark(intreadAheadLimit)voidreset//将当前流重置到做标记处Reader类层次FilterReaderPushbackReaderReaderBufferedReaderStringReaderCharArrayReaderInputStreamReaderPipedReaderFileReaderLineNumberReader抽象类Writer是全部字符输出流类型的共同父类五个根本的write方法:voidwrite(intc)//将整数c的低16位写入当前输出流voidwrite(char[]cbuf)//将字符数组cbuf[]写入当前输出流voidwrite(char[]cbuf,intoffset,intlength)//将字符数组cbuf[]中从下标off处开头的len个字符写入当前输出流voidwrite(Stringstr)//将字符串str写入当前输出流voidwrite(Stringstr,intoff,intlen)//将字符串str中从下标off处开头的len个字符写入当前输出流其它方法:Writerappend(CharSequencecsq)//将字符序列csq添加到当前输出流Writerappend(charc)//将字符c添加到当前输出流voidclose//关闭当前字符流并释放相关系统资源voidflush//清空缓存,使全部缓冲字符立刻写入输出流Writer类层次WriterBufferedWriterStringWriterCharArrayWriterPipedWriterOutputStreamWriterPrintWriterFilterWriterFileWriter9.3.2FileReader和FileWriter抽象类Reader和Writer类的子类,用于读、写字符文件与FileInputStream、FileOutputStream字节流相对应【例9-10】文件字符流的使用import;import;import;publicclassFileReaderWriterUse{publicFileReaderWriterUse{try{ FileWriterwriter=newFileWriter(“日记.txt“); writer.write(“今日特殊欢快,上午在路上帮助一个女生捡书。下午帮助一个同学答到〔没有被教师觉察〕,虽然教师没有觉察,但是我还是很内疚,究竟这是不允许的,也是不厚道的事情。晚上同学过生日,蹭一顿饭,甚是欢快!最纠结的事情是明天教师要提问。希望明天会更好!“);writer.close(); FileReaderreader=newFileReader(“日记.txt“);for(intc=reader.read();c!=-1;c=reader.read())System.out.print((char)c);reader.close();}catch(IOExceptione){System.err.println(e);e.printStackTrace();}}publicstaticvoidmain(Stringargs[]){ newFileReaderWriterUse; }}9.3.3BufferedReader和BufferedWriterBufferedReader类、LineNumberReader类和BufferedWriter类以缓冲流方式进展数据读写操作BufferedReader类的构造方法:BufferedReader(Readerin);//使用缺省的缓冲区大小BufferedReader(Readerin,intsz);//sz为缓冲区的大小除了read和write方法外还供给了整行字符处理方法:StringreadLine//读取一行字符串,输入流完毕时返回null默认大小足够用行处理字符流LineNumberReader是类BufferedReader的子类。构造方法:LineNumberReader(Readerin);LineNumberReader(Readerin,intsz);行:由换行符〔‘\n’〕、回车符〔‘\r’〕或二者共同终止StringgetLineNumber//猎取当前行号voidsetLineNumber(int)//设置当前行号默认行号从0开头,随数据读取在每个行完毕符处递增不实际更改流中当前位置;只改getLineNumber将返回的值BufferedWriter将数据缓冲到字符输出流。构造方法:BufferedWriter(Writerout);BufferedWriter(Writerout,intsz);行处理方法:voidnewLine//向输出流中写入一个行完毕标志不是简洁的换行符‘\n’或‘\r’,而是系统定义的行隔离标志〔lineseparator〕【例9-11】缓冲字符流的使用import;import;import;import;import;publicclassBufferedReaderWriterUse{publicBufferedReaderWriterUse{try{ BufferedWriterbw=newBufferedWriter(newFileWriter(“励志.txt“));bw.write(“有志者,事竞成“);bw.newLine;bw.write(“苦心人,天不负“);bw.newLine;bw.close;LineNumberReaderbr=newLineNumberReader(newFileReader(“励志.txt“));Strings;for(s=br.readLine;s!=null;s=br.readLine)System.out.println(br.getLineNumber+“:“+s);br.close;}catch(IOExceptione){System.err.println(e);e.printStackTrace;}}publicstaticvoidmain(Stringargs[]){ newBufferedReaderWriterUse;}}9.4文件操作类File类的对象是磁盘上的文件和路径的抽象表示形式,可设置文件或者名目的各种属性:文件名、文件大小、文件类型、文件修改日期和文件权限等;可推断指定文件是否存在、猎取当前文件路径、猎取当前名目文件列表、创立文件、删除文件、创立名目和删除名目等不涉及对文件的读写操作〔文件内容的读/写操作由流实现〕File类的实例是不行变的,即:一旦创立,File对象表示的抽象路径名将永不转变File类构造方法File(Stringpathname)例如,封装一个文件:Filef1=newFile(“mydir\\myfile.txt”);例如,封装一个名目:Filef2=newFile(“d:\\mydir\\dir1”);File(Stringparent,Stringchild),例如:Filef3=newFile(“d:\\d1”,“a.java”)File(Filedir,Stringname),例如:Filef4=newFile(f2,”myfile.txt”);分隔符:win\\unix/使用相对路径,移植性较好确定路径File类方法推断目标是否存在:publicbooleanexists推断是文件还是名目:publicbooleanisFile;publicbooleanisDirectory;猎取文件名称或整个路径publicStringgetName//仅返回文件名publicStringgetPath//返回整个路径publicStringgetAbsolutePath//返回确定路径猎取文件读写属性:publicbooleancanRead//是否可读publicbooleancanWrite//是否可写File类方法猎取上一级名目:publicStringgetParent猎取文件长度:publiclonglength猎取最近一次修改的时间: publiclonglastModified列出当前名目中的文件和名目:publicString[]listpublicFile[]listFiles重命名:publicbooleanrenameTo(Filenew)删除文件或名目:publicbooleandelete;创立名目:publicbooleanmkdir【例9-12】文件类的使用importjava.io.File;importjava.util.Date;importjava.text.SimpleDateFormat;importjava.io.IOException;publicclassFileUse{publicFileUse{Filedir=newFile(“.“);//当前名目intcount_dirs=0;//统计名目数intcount_files=0;//统计文件数longbyte_files=0;//统计全部文件总字节数System.out.println(dir.getAbsolutePath+“名目\r\n“);//SimpleDateFormat类是日期格式转换〔日期->文本〕、〔文本->日期〕SimpleDateFormatsdf=newSimpleDateFormat(“yyyy-MM-ddhh:mm“); File[]files=dir.listFiles;

for(inti=0;i<files.length;i++){System.out.print(files[i].getName+“\t“);//显示文件名if(files[i].isFile){//推断指定File对象是否是文件System.out.print(files[i].length+“B\t“);//显示文件长度count_files++;byte_files+=files[i].length;}else{ //<DIR>是查看当前所在名目的文件和名目(“<DIR>\t“);count_dirs++;}System.out.println(sdf.format(newDate(files[i].lastModified)));}System.out.println(“\r\n共有“+count_files+“个文件,总字节数为“+byte_files);(“共有“+count_dirs+“个名目“);}publicstaticvoidmain(Stringargs[])throwsIOException{newFileUse;}}随机访问文件类通常,输入流只能从中读取数据,而不能向其写出数据;输出流则只能向其写出数据,而不能从中读取数据。但有一个特例:RandomAccessFile类,直接继承object,同时实现了接口DataInput和DataOutput该类创立的流的指向既可以作为源也可以作为目的地,所以既可以用来处理文件的输入,又可以处理文件的输出,实现对同一个文件的交替读写,并允许指定读写位置字节流RandomAccessFile类将文件看作字节数组,用文件指针指示当前位置新建RandomAccessFile类的对象后,文件指针指向文件头读取或存储数据后,文件指针指向刚读取或写入的数据后由于Java的各种根本数据类型大小固定,不依靠于具体的计算机或操作系统,所以可便利地计算出文件指针的当前位置和所需移动到的位置59构造方法:RandomAccessFile(Filefile,Stringmode)//file指定流的源,同时也是流目的地;mode取r〔只读〕或rw〔可读写〕准备流对文件的访问权限RandomAccessFile(Stringname,Stringmode)//name指定一个文件名,给出流的源,同时也是流目的地。访问模式mode取r〔只读〕或rw〔可读写〕准备流对文件的访问权限60常用方法:longgetFilePointer;//猎取文件指针位置〔距文件头的字节数〕voidseek(longpos)//设置文件指针到pos处,pos为整数,表示字节数,为0时表示移到文件头intread//读取一个字节voidwrite(intv)//写入v的低8位StringreadLine//读入一行longlength//返回文件长度voidclose//关闭文件61intreadInt//读取一个整数voidwriteInt(intv)//写入一个整数……读写根本数据类型数据及字符串62【例9-13】随机访问文件类的使用importjava.io.RandomAccessFile;importjava.io.IOException;

publicclassRandomAccessFileUse{publicRandomAccessFileUse{try{RandomAccessFilef=newRandomAccessFile(“写偶数.txt“,“rw“);inta; for(inti=0;i<10;i++)//写入10个偶数:0,2,4,6,...,18f.writeInt(2*i); f.seek(8);/*定位到第三个偶数上*/ f.writeInt(0);f.seek(0);//将文件指针定位到文件的头部 for(inti=0;i<10;i++){a=f.readInt;System.out.println(“[“+i+“]:“+a);}f.close();}catch(IOExceptione){System.err.println(e);e.printStackTrace();}}publicstaticvoidmain(Stringargs[]){ newRandomAccessFileUse;}}63文件过滤器接口使用带通配符的过滤条件可以只查看满足条件的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论