您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > Java的文件输入输出
Java的文件(读写)输入输出1、流:它是通过缓冲机制将数据从生产者(如键盘、磁盘文件、内存或其他设备)传送到接受该数据的消费者(如屏幕、文件或者内存等)的这一过程的抽象。2、有关的Java包:Java.io包中包括许多类提供许多有关文件的各个方面操作。3、有关文件名及目录名的类:File类独立于系统平台,利用构造函数File(Stringpath)、File(Stringpath,StringFileName)、File(Filedir,Stringname)等创建出File对象;再利用canRead()、canWrite()、getParent()、getPath()等成员函数实现对文件的各个属性的操作。importjava.io.*;publicclassFileTest{publicstaticvoidmain(String[]args){StringFileName=C:\\temp\\myfile.datFilemyFile=newFile(FileName);If(!myFile.exists()){System.err.println(Can'tFind+FileName);return;}System.out.println(File+FileName+is+myFile.length()+bytesLong!);If(myFile.isDirectory()){System.err.println(File+FileName+IsaDirectory!);return;}}}4、有关文件内容(数据)操作的类:4.1输入输出抽象基类InputStream/OutputStream,实现文件内容操作的基本功能函数read()、write()、close()、skip()等;一般都是创建出其派生类对象(完成指定的特殊功能)来实现文件读写。在文件读写的编程过程中主要应该注意异常处理的技术。4.2FileInputStream/FileOutputStream:用于本地文件读写(二进制格式读写并且是顺序读写,读和写要分别创建出不同的文件流对象);本地文件读写编程的基本过程为:①生成文件流对象(对文件读操作时应该为FileInputStream类,而文件写应该为FileOutputStream类);②调用FileInputStream或FileOutputStream类中的功能函数如read()、write(intb)等)读写文件内容;③关闭文件(close())。4.3PipedInputStream/PipedOutputStream:用于管道输入输出(将一个程序或一个线程的输出结果直接连接到另一个程序或一个线程的输入端口,实现两者数据直接传送。操作时需要连结);4.3.1管道的连接:方法之一是通过构造函数直接将某一个程序的输出作为另一个程序的输入,在定义对象时指明目标管道对象PipedInputStreampInput=newPipedInputStream();PipedOutputStreampOutput=newPipedOutputStream(pInput);方法之二是利用双方类中的任一个成员函数connect()相连接PipedInputStreampInput=newPipedInputStream();PipedOutputStreampOutput=newPipedOutputStream();pinput.connect(pOutput);4.3.2管道的输入与输出:输出管道对象调用write()成员函数输出数据(即向管道的输入端发送数据);而输入管道对象调用read()成员函数可以读起数据(即从输出管道中获得数据)。这主要是借助系统所提供的缓冲机制来实现的。4.4、随机文件读写:RandomAccessFile类(它直接继承于Object类而非InputStream/OutputStream类),从而可以实现读写文件中任何位置中的数据(只需要改变文件的读写位置的指针)。随机文件读写编程的基本过程为:①生成流对象并且指明读写类型;②移动读写位置;③读写文件内容;④关闭文件。StringBufferbuf=newStringBuffer();charch;while((ch=(char)System.in.read())!='\n'){buf.append(ch);}//读写方式可以为rorrwRandomAccessFilemyFileStream=newRandomAccessFile(myFile.dat,rw);myFileStream.seek(myFileStream.length());myFileStream.writeBytes(buf.toString());//将用户从键盘输入的内容添加到文件的尾部myFileStream.close();4.5DataInput/DataOutput接口:实现与机器无关的各种数据格式读写(如readChar()、readInt()、readLong()、readFloat(),而readLine()将返回一个String)。其中RandomAccessFile类实现了该接口,具有比FileInputStream或FileOutputStream类更灵活的数据读写方式。4.6标准输入输出流:System.in(如:charc=System.in.read())和System.out(如:System.out.println()、System.out.println())。try{charch=System.in.read();//返回二进制数据(低8位为键盘的ASCII码)}catch(IOExceptione){}4.7、文件操作的一般方法:(1)生成一个输入输出文件类的对象(根据所要操作的类型);(2)调用此类的成员函数实现文件数据内容的读写;(3)关闭此文件。Java读/写文件文本文件的示例/**简单的读/写文本文件的示例*这里包含了三个例子,即*1.将文件读入到内存(这里是StringBuffer)的例子*2.将内容中的文本写到文:victory:件*3.将一个文件的内容读出来写入另一个文件中*同时也展示了如果从输入流中读出来内容写入输出流中(仅限文本流)*三个例子可以独立存在,所以根据需要只看其中一个就行了。*/importjava.io.BufferedReader;importjava.io.FileInputStream;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.InputStream;importjava.io.InputStreamReader;importjava.io.OutputStream;importjava.io.OutputStreamWriter;importjava.io.PrintStream;importjava.io.PrintWriter;publicfinalclassAccessTextFile{/***1.演示将流中的文本读入一个StringBuffer中*@throwsIOException*/publicvoidreadToBuffer(StringBufferbuffer,InputStreamis)throwsIOException{Stringline;//用来保存每行读取的内容BufferedReaderreader=newBufferedReader(newInputStreamReader(is));line=reader.readLine();//读取第一行while(line!=null){//如果line为空说明读完了buffer.append(line);//将读到的内容添加到buffer中buffer.append(\n);//添加换行符line=reader.readLine();//读取下一行}}/***2.演示将StringBuffer中的内容读出到流中*/publicvoidwriteFromBuffer(StringBufferbuffer,OutputStreamos){//用PrintStream可以方便的把内容输出到输出流中//其对象的用法和System.out一样//(System.out本身就是PrintStream对象)PrintStreamps=newPrintStream(os);ps.print(buffer.toString());}/***3*.从输入流中拷贝内容到输入流中*@throwsIOException*/publicvoidcopyStream(InputStreamis,OutputStreamos)throwsIOException{//这个读过过程可以参阅readToBuffer中的注释Stringline;BufferedReaderreader=newBufferedReader(newInputStreamReader(is));PrintWriterwriter=newPrintWriter(newOutputStreamWriter(os));line=reader.readLine();while(line!=null){writer.println(line);line=reader.readLine();}writer.flush();//最后确定要把输出流中的东西都写出去了//这里不关闭writer是因为os是从外面传进来的//既然不是从这里打开的,也就不从这里关闭//如果关闭的writer,封装在里面的os也就被关了}/***3.调用copyStream(InputStream,OutputStream)方法拷贝文本文件*/publicvoidcopyTextFile(StringinFilename,StringoutFilename)throwsIOException{//先根据输入/输出文件生成相应的输入/输出流InputStreamis=newFileInputStream(inFilename);OutputStreamos=newFileOutputStream(outFilename);copyStream(is,os);//用copyStream拷贝内容is.close();//is是在这里打开的,所以需要关闭os.close();//os是在这里打开的,所以需要关闭}publicstaticvoidmain(String[]args)throwsIOException{intsw=1;//三种测试的选择开关AccessTextFiletest=newAccessTextFile();switch(sw){case1://测试读{InputStreamis=newFileInputStream(E:\\test.txt);StringBufferbuffer=newStringBuffer();test.readToBuffer(buffer,is);System.out.println(buffer);//将读到buffer中的内容写出来is.close();break;}case2://测试写{StringBufferbuffer=newStringBuffer(Onlyatest\n);test.writeFromBuffer(buffer,System.out);break;}case3://测试拷贝{test.copyTextFile(E:\\test.txt,E:\\r.txt);}break;}}}输入/输出(Input/Output)泛指对某个设备或环境进行数据的输入或输出。例如对硬盘进行输入/输出、对视频设备进行输入/输出、对网络主机进行输入/输出等,可以想象,因设备或环境的不同,会有各式各样的输入/输出问题与解决方案。输入/输出问题在程序设计中实
本文标题:Java的文件输入输出
链接地址:https://www.777doc.com/doc-3400589 .html