文件输入输出_第1页
文件输入输出_第2页
文件输入输出_第3页
文件输入输出_第4页
文件输入输出_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

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

文档简介

Java语言程序设计1JavaI/O操作概念JavaI/O类JavaI/O操作标准输入/输出文件读写操作目录管理随机访问文件文件属性2概念I/O来源控制台(console,如DOS窗口)打印/读入文件(file)读/写网络接口(TCP/UDP端口)读/写针对数据的读写以流(stream)的方式对数据进行操作数据源程序读出数据流目的程序写入数据流流的重要特性顺序读/写sequentially3概念读/写流的一般流程读(Reading)openastream//打开读出流whilemoreinformation//判断

readinformation//读closethestream//关闭流写(Writing)openastream//打开写入流whilemoreinformation//判断

writeinformation//写closethestream//关闭流4概念两种流的定义(读取信息的基本数据单位)字节流(bytestream):一个字节(8-bit)一个字节读/写字符流(characterstream):一个字符一个字符读/写(具有特定字符编码的数据)java语言6A617661D3EFD1D4以字节流的方式读:读8次,8个字节以字符流的方式读:读6次,6个字符5JavaI/O操作概念JavaI/O类JavaI/O操作标准输入/输出文件读写操作目录管理随机访问文件文件属性6JavaI/O类字节流的读/写操作(来自JDK1.0)java.io.InputStream(抽象类)publicabstract

intread()publicint

read(byteb[])publicint

read(byteb[],intoffset,intlength)到达流的终点,无数据读出则返回-1java.io.OutputStream(抽象类)publicabstractvoidwrite(intb)publicvoidwrite(byteb[])publicvoidwrite(byteb[],intoffset,intlength)所有的读/写函数都抛出java.io.IOException7JavaI/O类字符流的读/写操作(来自JDK1.1)java.io.Reader(抽象类)publicintread()publicint

read(char

cbuf[])publc

abstract

int

read(char

cbuf[],intoffset,intlength)到达流的终点,无数据读出则返回-1java.io.Writer(抽象类)publicvoidwrite(intc)publicvoidwrite(char

cbuf[])publicvoidwrite(char

cbuf[],intoffset,intlength)所有的读/写函数都抛出java.io.IOException8JavaI/O类I/O流的层次关系classjava.io.InputStream的子类classjava.io.ByteArrayInputStreamclassjava.io.FileInputStreamclassjava.io.FilterInputStreamclassjava.io.BufferedInputStreamclassjava.io.DataInputStream

classjava.io.LineNumberInputStreamclassjava.io.PushbackInputStreamclassjava.io.ObjectInputStream

classjava.io.PipedInputStreamclassjava.io.SequenceInputStreamclassjava.io.StringBufferInputStream………9JavaI/O类I/O流的层次关系classjava.io.OutputStream的子类classjava.io.ByteArrayOutputStreamclassjava.io.FileOutputStreamclassjava.io.FilterOutputStreamclassjava.io.BufferedOutputStreamclassjava.io.DataOutputStream

classjava.io.PrintStreamclassjava.io.ObjectOutputStreamclassjava.io.PipedOutputStream………10JavaI/O类I/O流的层次关系classjava.io.Reader的子类classjava.io.BufferedReader

classjava.io.LineNumberReaderclassjava.io.CharArrayReaderclassjava.io.FilterReader

classjava.io.PushbackReaderclassjava.io.InputStreamReader

classjava.io.FileReaderclassjava.io.PipedReaderclassjava.io.StringReader………11JavaI/O类I/O流的层次关系classjava.io.Writer的子类classjava.io.BufferedWriterclassjava.io.CharArrayWriterclassjava.io.FilterWriterclassjava.io.OutputStreamWriter

classjava.io.FileWriterclassjava.io.PipedWriterclassjava.io.PrintWriterclassjava.io.StringWriter………12JavaI/O类I/O流的分类(12个功能类)I/O类型所用到的类描述文件FileReader/FileWriterFileInputStream/FileOutputStream文件流(读/写文件)缓冲BufferedReader/BufferedWriterBufferedInputStreamBufferedOutputStream提高读/写效率打印PrintWriter

PrintStream

(System.out.println())内存CharArrayReader/CharArrayWriterByteArrayInputStreamByteArrayOutputStreamStringReader/StringWriterStringBufferInputStream读/写内存13JavaI/O类I/O流的分类(12个功能类)I/O类型所用到的类描述字节流和字符流的转换InputStreamReaderOutputStreamWriter将InputStream中读入的字节转为字符/将字符转为字节写入OutputStream管道pipePipedReader/PipedWriterPipedInputStream/PipedOutputStream文件流(读/写文件)连接ConcatenationSequenceInputStream多个输入流连接为一个输入流对象串行化ObjectInputStreamObjectOutputStreamObjectSerialization14JavaI/O类I/O流的分类(12个功能类)I/O类型所用到的类描述基本数据转化DataInputStreamDataOutputStreamJAVA基本数据类型的读/写计数LineNumberReaderLineNumberInputStream读操作时记录行数PeekingAheadPushbackReaderPushbackInputStream可回退缓存(pushbackbuffer)过滤FilterReader/FilterWriterFilterInputStream/FilterOutputStream在读/写操作时对数据进行过滤15JavaI/O操作概念JavaI/O类JavaI/O操作标准输入/输出文件读写操作目录管理随机访问文件文件属性16JavaI/O操作主要内容标准输入/输出控制台屏幕打印和键盘读入文件I/O操作文件读写如何提高文件读写效率流的包装(Wrap)基本数据转换流目录管理随机访问文件(RandomAccessFile)文件属性17输出:控制台屏幕打印classTest{ publicstaticvoidmain(Stringargs[]){

System.out.println(“HelloWorld!”); }}标准输入/输出18输入:键盘读入importjava.io.IOException;classTest{ publicstaticvoidmain(Stringargs[])throws

IOException{ byte[]b=newbyte[10];

System.out.println("Receivednumber="+System.in.read(b)); }}标准输入/输出C:\>javaTestAReceivednumber=3C:\>19文件读/写流程打开文件流条件判断读出/写入关闭文件流两种类型文件FileInputStream/FileOutputStream(字节流)FileReader/FileWriter(字符流)文件读写操作20字节流构造方法publicFileInputStream(Filefile)throwsFileNotFoundExceptionpublicFileInputStream(Stringname)throwsFileNotFoundExceptionpublicFile(Stringpathname)publicFileOutputStream(Filefile)throwsFileNotFoundExceptionpublicFileOutputStream(Filefile,booleanappend)throwsFileNotFoundException//是否向已存在的文件后添加publicFileOutputStream(Stringname)throwsFileNotFoundExceptionpublicFileOutputStream(Stringname,booleanappend)throwsFileNotFoundException文件读写操作21文件读写-实例1文件读写操作importjava.io.*;publicclassCopyBytes{publicstaticvoidmain(String[]args)throwsIOException{FileinputFile=newFile(“original.txt");FileoutputFile=newFile(“result.txt");

FileInputStreamin=newFileInputStream(inputFile);

FileOutputStreamout=newFileOutputStream(outputFile);

intc;while((c=in.read())!=-1)

out.write(c);

in.close();

out.close();}}publicintread()throwsIOExceptionpublicintread(byte[]b)throwsIOExceptionpublicintread(byte[]b,intoff,int

len)throwsIOExceptionFileInputStreamin=newFileInputStream(“original.txt");FileOutputStreamout=newFileOutputStream(“result.txt");publicvoidwrite(intb)throwsIOExceptionpublicvoidwrite(byte[]b)throwsIOExceptionpublicvoidwrite(byte[]b,intoff,int

len)throwsIOException22字符流构造方法publicFileReader(Filefile)throwsFileNotFoundExceptionpublicFileReader(String

fileName)throwsFileNotFoundExceptionpublicFile(Stringpathname)publicFileWriter(Filefile)throwsIOExceptionpublicFileWriter(Filefile,booleanappend)throwsIOExceptionpublicFileWriter(String

fileName)throwsIOExceptionpublicFileWriter(String

fileName,booleanappend)throwsIOException文件读写操作23文件读写-实例2文件读写操作importjava.io.*;publicclassCopy{publicstaticvoidmain(String[]args)throwsIOException{FileinputFile=newFile(“original.txt");FileoutputFile=newFile(“result.txt");

FileReaderin=newFileReader(inputFile);

FileWriterout=newFileWriter(outputFile);

intc;while((c=in.read())!=-1)

out.write(c);

in.close();

out.close();}}FileReaderin=newFileReader(“original.txt");FileWriterout=newFileWriter(“result.txt");publicintread()throwsIOExceptionpublicintread(char[]cbuf)throwsIOExceptionpublicintread(char[]cbuf,intoff,int

len)throwsIOExceptionpublicvoidwrite(intb)throwsIOExceptionpublicvoidwrite(char[]cbuf)throwsIOExceptionpublicvoidwrite(char[]cbuf,intoff,int

len)throwsIOException24两类缓冲流针对字节流java.io.BufferedInputStream类java.io.BufferedOutputStream类针对字符流java.io.BufferedReader类java.io.BufferedWriter类如何提高文件读写效率25构造方法publicBufferedInputStream(InputStreamin)2048bytespublicBufferedInputStream(InputStreamin,intsize)publicBufferedOutputStream(OutputStreamout)512bytespublicBufferedOutputStream(OutputStreamout,intsize)publicBufferedReader(Readerin)8192bytespublicBufferedReader(Readerin,int

sz)publicBufferedWriter(Writerout)8192bytepublicBufferedWriter(Writerout,int

sz)如何提高文件读写效率26

Stringfilename=“test.txt”;

FileInputStream

fis=newFileInputStream(filename);

intcount=0;

intc;while((c=fis.read())!=-1){ if(c=='A'){ count++; }}

fis.close();

System.out.println(count);如何提高文件读写效率-实例1如何提高文件读写效率

Stringfilename=“test.txt”;

FileInputStream

fis=newFileInputStream(filename);

BufferedInputStream

bis=newBufferedInputStream(fis);

intcount=0;

intc;while((c=bis.read())!=-1){ if(c=='A'){ count++; }}

fis.close();

System.out.println(count);

FileInputStream

fis=newFileInputStream(“test.txt”);

intcount=0;finalintBUFSIZE=1024;bytebuf[]=newbyte[BUFSIZE];

int

len;while((len=fis.read(buf))!=-1){for(inti=0;i<len;i++){if(buf[i]=='A'){count++;}}}

fis.close();27

Stringfilename=“test.txt”;

FileReader

fr=newFileReader(filename);

BufferedReader

br=newBufferedReader(fr);

intcount=0;while(br.readLine()!=null){ count++;}

br.close();

System.out.println(count);如何提高文件读写效率-实例2如何提高文件读写效率28概述流的包装(wrap)

FileReader

fr=newFileReader(filename);

BufferedReader

br=newBufferedReader(fr);

BufferedReader

br=newBufferedReader(newFileReader(filename));

PrintWriterout=newPrintWriter( newBufferedWriter(new

FileWriter(filename)));

publicStringreadLine()injava.io.BufferedReaderpublicvoidprintln(Stringx)injava.io.PrintWriter利用不同流的特点(方法)寻找合适的方法完成特定的需求对已有的流进行再处理29流的种类节点流直接对数据源进行读/写操作的流处理流对一个已有的流进行某种操作的流流的包装(wrap)30节点流FileInputStream,PipedInputStream,ByteArrayInputStream,StringBufferInputStreamFileOutputStream,PipedOutputStream,ByteArrayOutputStreamCharArrayReader,FileReader,PipedReader,StringReaderCharArrayWriter,FileWriter,PipedWriter,StringWriter流的包装(wrap)31处理流FilterOutputStream,DataOutputStream,BufferedOutputStream,PrintStreamFilterInputStream,LineNumberInputStream,DataInputStream,BufferedInputStream,PushbackInputStreamBufferedReader,LineNumberReader,InputStreamReader,FilterReader,PushBackReaderBufferedWriter,OutputStreamReader,FilterWriter,PrintWriter流的包装(wrap)32一个实例java.io.FileReaderpublicFileReader(Filefile)throwsFileNotFoundExceptionpublicFileReader(String

fileName)throwsFileNotFoundExceptionjava.io.BufferedReaderpublicBufferedReader(Readerin)8192bytespublicBufferedReader(Readerin,int

sz)流的包装改变了流的行为流的包装(wrap)33流的包装(wrap)-实例1流的包装(wrap)importjava.io.*;publicclassEcho{publicstaticvoidmain(String[]args)throwsIOException{

BufferedReaderin=newBufferedReader( newInputStreamReader(System.in)); Strings;

while((s=in.readLine()).length()!=0)

System.out.println(s);}}publicstaticfinalInputStream

in(java.lang.System)publicInputStreamReader(InputStreamin)publicBufferedReader(Readerin)程序如何结束(跳出while循环)?34概述java.io.DataInputStream类publicDataInputStream(InputStreamin)publicfinalboolean

readBoolean()publicfinalbytereadByte()publicfinalcharreadChar()publicfinalint

readInt()java.io.DataOutputStream类publicDataOutputStream(OutputStreamout)publicfinalvoidwriteBoolean(booleanv)publicfinalvoidwriteByte(intv)publicfinalvoidwriteChar(intv)publicfinalvoidwriteInt(intv)基本数据转换流35DataOutputStreamout=newDataOutputStream(new

FileOutputStream("invoice1.txt"));doubleprices[]={19.99,9.99};intunits[]={12,8};Stringdescs[]={"JavaT-shirt","JavaMug"};for(inti=0;i<prices.length;i++){

out.writeDouble(prices[i]);

out.writeChar('\t');

out.writeInt(units[i]);

out.writeChar('\t');

out.writeChars(descs[i]);

out.writeChar('\n');}out.close();基本数据转换流-实例基本数据转换流DataInputStreamin=newDataInputStream( newFileInputStream("invoice1.txt"));doubletotal;try{ while(true){ doubleprice=in.readDouble();

in.readChar();

intunit=in.readInt();

in.readChar(); charchr;

StringBuffer

desc=newStringBuffer(20); while((chr=in.readChar())!=‘\n’)

desc.append(chr);

System.out.println("You'veordered"+unit+"units of"+desc+"at$"+price); total=total+unit*price; }}catch(EOFExceptione){}System.out.println("ForaTOTALof:$"+total);in.close();19.9912JavaT-shirt9.998JavaMug36概述java.io.File类:文件和目录的路径名构造方法publicFile(Stringpathname)publicFile(Stringparent,Stringchild)publicFile(Fileparent,Stringchild)parent通常表示一个目录,child则表示一个目录或文件路径名(pathname)UNIX平台上绝对路径的前缀“/”,相对路径无前缀,例“/etc/inetd.conf”、“inetd.conf”Windows平台,绝对路径名的前缀由“盘符:\”组成;UNC路径名前缀为“\\”,然后是主机名和共享名,相对路径名无盘符,例“c:\windows\notepad.exe”、“notepad.exe”目录管理37方法publicboolean

canWrite()/canRead()publicbooleanexists()publicbooleandelete()删除文件或目录,若删除目录,要求该目录必须为空publicboolean

createNewFile()创建一个空文件,当且仅当该文件不存在publicboolean

isDirectory()/isFile()/isHidden()publiclonglastModified()/publicboolean

setLastModified(longtime)publicString[]list()得到当前目录下的所有文件名和目录名,若该File对象不是表示目录,则返回nullpublicboolean

mkdir()/mkdirs()创建一个目录publicboolean

renameTo(File

dest)publicboolean

setReadOnly()目录管理38目录管理—方法举例目录管理importjava.io.File;publicclassDirList{ publicstaticvoidmain(String[]args){ Filepath=newFile("."); String[]list=path.list();

for(inti=0;i<list.length;i++)

System.out.println(list[i]); }}39目录管理—方法举例目录管理importjava.io.File;importjava.io.FilenameFilter;publicclassDirList{ publicstaticvoidmain(String[]args){ Filepath=newFile("."); String[]list=path.list(newDirFilter(args[0])); for(inti=0;i<list.length;i++)

System.out.println(list[i]); }}classDirFilterimplementsFilenameFilter{ Stringkey;

DirFilter(Stringkey){this.key=key;} publicboolean

accept(Filedir,Stringname){ Stringf=newFile(name).getName(); returnf.indexOf(key)!=-1; }}java.util.FilenameFilter

接口

publicboolean

accept(Filedir,Stringname);//是否指定的文件应包含在文件列表中publicStringgetName()injava.io.File//获得文件或目录名,仅仅是最后的部分40随机访问文件(RandomAccessFile)java.io.RandomAccessFile类读写操作在同一个类中完成,须在构造对象时指定参数通过移动文件指针(filepointer)在文件的指定位置进行读写操作构造方法publicRandomAccessFile(Stringname,Stringmode)throwsFileNotFoundExceptionpublicRandomAccessFile(Filefile,Stringmode)throwsFileNotFoundExceptionmode:“r”,“rw”随机访问文件41方法publicvoidseek(longpos)publicintread()publicint

read(byte[]b)publicint

read(byte[]b,intoff,int

len)publicfinalboolean

readBoolean()/readByte()/readChar()/readShort()/readInt()/readDouble()/readFloat()publicfinalStringreadLine()publicvoidwrite(intb)publicvoidwrite(byte[]b)publicvoidwrite(byte[]b,intoff,int

len)publicfinalvoidwriteBoolean()/writeByte()/writeChar()/writeShort()/writeInt()/writeDouble()/writeFloat()随机访问文件42随机访问文件(RandomAccessFile)-实例随机访问文件RandomAccessFile

rf=newRandomAccessFile("rtest.dat","rw");for(inti=0;i<10;i++)

rf.writeDouble(i*1.414);rf.close();rf=newRandomAccessFile("rtest.dat","rw");rf.seek(5*8);rf.writeDouble(47.0001);rf.close();rf=newRandomAccessFile("rtest.dat","r");for(inti=0;i<10;i++)

System.out.println("Value"+i+":"+rf.readDouble());rf.close();运行结果:Value0:0.0Value1:1.414Value2:2.828Value3:4.242Value4:5.656Value5:47.0001Value6:8.484Value7:9.898Value8:11.312Value9:12.72599999999999943文件的特性读和写的权限文件长度修改时间是否是目录java.io.File类设定文件属性查询文件属性文件属性44文件属性获取文件路径importjava.io.*;classAttrDemo1{publicstaticvoidmain(String[]args)throwsIOException{Filetestfile=newFile("."+File.separatorChar+"testfile1");

testfile.createNewFile();

System.out.println("name="+testfile.getName());

System.out.println("path="+testfile.getPath());

System.out.println("absolutepath="+testfile.getAbsolutePath());

Syste

温馨提示

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

评论

0/150

提交评论