版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Java技术基础1Java技术基础1第八章输入输出概念JavaI/O类JavaI/O操作标准输入/输出文件读写操作目录管理随机访问文件文件属性2第八章输入输出概念2概念I/O来源控制台(console,如DOS窗口)打印/读入文件(file)读/写网络接口(TCP/UDP端口)读/写针对数据的读写以流(stream)的方式对数据进行操作数据源程序读出数据流目的程序写入数据流流的重要特性顺序读/写sequentially3概念I/O来源数据源程序读出数据流目的程序写入数据流流的概念读/写流的一般流程读(Reading)openastream//打开读出流whilemoreinformation//判断readinformation//读closethestream//关闭流写(Writing)openastream//打开写入流whilemoreinformation//判断writeinformation//写closethestream//关闭流4概念读/写流的一般流程4概念两种流的定义(读取信息的基本数据单位)字节流(bytestream):一个字节(8-bit)一个字节读/写字符流(characterstream):一个字符一个字符读/写(具有特定字符编码的数据)java语言6A617661D3EFD1D4以字节流的方式读:读8次,8个字节以字符流的方式读:读6次,6个字符5概念两种流的定义(读取信息的基本数据单位)ja第八章文件输入输出概念JavaI/O类JavaI/O操作标准输入/输出文件读写操作目录管理随机访问文件文件属性6第八章文件输入输出概念6JavaI/O类字节流的读/写操作(来自JDK1.0)java.io.InputStream(抽象类)publicabstractintread()publicintread(byteb[])publicintread(byteb[],intoffset,intlength)到达流的终点,无数据读出则返回-1java.io.OutputStream(抽象类)publicabstractvoidwrite(intb)publicvoidwrite(byteb[])publicvoidwrite(byteb[],intoffset,intlength)所有的读/写函数都抛出java.io.IOException7JavaI/O类字节流的读/写操作(来自JDK1.0)7JavaI/O类字符流的读/写操作(来自JDK1.1)java.io.Reader(抽象类)publicintread()publicintread(charcbuf[])publicabstractintread(charcbuf[],intoffset,intlength)到达流的终点,无数据读出则返回-1java.io.Writer(抽象类)publicvoidwrite(intc)publicvoidwrite(charcbuf[])publicvoidwrite(charcbuf[],intoffset,intlength)所有的读/写函数都抛出java.io.IOException8JavaI/O类字符流的读/写操作(来自JDK1.1)8JavaI/O类I/O流的层次关系classjava.io.InputStream的子类classjava.io.ByteArrayInputStreamclassjava.io.FileInputStreamclassjava.io.FilterInputStreamclassjava.io.BufferedInputStreamclassjava.io.DataInputStreamclassjava.io.ObjectInputStreamclassjava.io.PipedInputStreamclassjava.io.SequenceInputStream………9JavaI/O类I/O流的层次关系9JavaI/O类I/O流的层次关系classjava.io.OutputStream的子类classjava.io.ByteArrayOutputStreamclassjava.io.FileOutputStreamclassjava.io.FilterOutputStreamclassjava.io.BufferedOutputStreamclassjava.io.DataOutputStreamclassjava.io.PrintStreamclassjava.io.ObjectOutputStreamclassjava.io.PipedOutputStream………10JavaI/O类I/O流的层次关系10JavaI/O类I/O流的层次关系classjava.io.Reader的子类classjava.io.BufferedReader
classjava.io.CharArrayReaderclassjava.io.FilterReader classjava.io.InputStreamReader classjava.io.FileReaderclassjava.io.PipedReaderclassjava.io.StringReader………11JavaI/O类I/O流的层次关系11JavaI/O类I/O流的层次关系classjava.io.Writer的子类classjava.io.BufferedWriterclassjava.io.CharArrayWriterclassjava.io.FilterWriterclassjava.io.OutputStreamWriterclassjava.io.FileWriterclassjava.io.PipedWriterclassjava.io.PrintWriterclassjava.io.StringWriter………12JavaI/O类I/O流的层次关系12JavaI/O类I/O流的分类(12个功能类)I/O类型所用到的类描述文件FileReader/FileWriterFileInputStream/FileOutputStream文件流(读/写文件)缓冲BufferedReader/BufferedWriterBufferedInputStreamBufferedOutputStream提高读/写效率打印PrintWriterPrintStream
(System.out.println())内存CharArrayReader/CharArrayWriterByteArrayInputStreamByteArrayOutputStreamStringReader/StringWriterStringBufferInputStream读/写内存13JavaI/O类I/O流的分类(12个功能类)I/O类型JavaI/O类I/O流的分类(12个功能类)I/O类型所用到的类描述字节流和字符流的转换InputStreamReaderOutputStreamWriter将InputStream中读入的字节转为字符/将字符转为字节写入OutputStream管道pipePipedReader/PipedWriterPipedInputStream/PipedOutputStream程序、进程通讯连接ConcatenationSequenceInputStream多个输入流连接为一个输入流对象串行化ObjectInputStreamObjectOutputStreamObjectSerialization14JavaI/O类I/O流的分类(12个功能类)I/O类型JavaI/O类I/O流的分类(12个功能类)I/O类型所用到的类描述基本数据转化DataInputStreamDataOutputStreamJAVA基本数据类型的读/写计数LineNumberReaderLineNumberInputStream读操作时记录行数PeekingAheadPushbackReaderPushbackInputStream可回退缓存(pushbackbuffer)过滤FilterReader/FilterWriterFilterInputStream/FilterOutputStream在读/写操作时对数据进行过滤15JavaI/O类I/O流的分类(12个功能类)I/O类型第八章文件输入输出概念JavaI/O类JavaI/O操作标准输入/输出文件读写操作目录管理随机访问文件文件属性16第八章文件输入输出概念16JavaI/O操作主要内容标准输入/输出控制台屏幕打印和键盘读入文件I/O操作文件读写如何提高文件读写效率流的包装(Wrap)基本数据转换流目录管理随机访问文件(RandomAccessFile)文件属性网络流操作17JavaI/O操作主要内容17输出:控制台屏幕打印classTest{ publicstaticvoidmain(Stringargs[]){ System.out.println(“HelloWorld!”); }}标准输入/输出18输出:控制台屏幕打印标准输入/输出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输入:键盘读入标准输入/输出C:\>javaTest19文件读/写流程打开文件流条件判断读出/写入关闭文件流两种类型文件FileInputStream/FileOutputStream(字节流)FileReader/FileWriter(字符流)文件读写操作20文件读/写流程文件读写操作20字节流构造方法publicFileInputStream(Filefile)throwsFileNotFoundExceptionpublicFileInputStream(Stringname)throwsFileNotFoundExceptionpublicFile(Stringpathname)publicFileOutputStream(Filefile)throwsFileNotFoundExceptionpublicFileOutputStream(Filefile,booleanappend)throwsFileNotFoundException//是否向已存在的文件后添加publicFileOutputStream(Stringname)throwsFileNotFoundExceptionpublicFileOutputStream(Stringname,booleanappend)throwsFileNotFoundException文件读写操作21字节流构造方法文件读写操作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,intlen)throwsIOExceptionFileInputStreamin=newFileInputStream(“original.txt");FileOutputStreamout=newFileOutputStream(“result.txt");publicvoidwrite(intb)throwsIOExceptionpublicvoidwrite(byte[]b)throwsIOExceptionpublicvoidwrite(byte[]b,intoff,intlen)throwsIOException22文件读写-实例1文件读写操作importjava.io.*字符流构造方法publicFileReader(Filefile)throwsFileNotFoundExceptionpublicFileReader(StringfileName)throwsFileNotFoundExceptionpublicFile(Stringpathname)publicFileWriter(Filefile)throwsIOExceptionpublicFileWriter(Filefile,booleanappend)throwsIOExceptionpublicFileWriter(StringfileName)throwsIOExceptionpublicFileWriter(StringfileName,booleanappend)throwsIOException文件读写操作23字符流构造方法文件读写操作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,intlen)throwsIOExceptionpublicvoidwrite(intb)throwsIOExceptionpublicvoidwrite(char[]cbuf)throwsIOExceptionpublicvoidwrite(char[]cbuf,intoff,intlen)throwsIOException24文件读写-实例2文件读写操作importjava.io.*两类缓冲流针对字节流java.io.BufferedInputStream类java.io.BufferedOutputStream类针对字符流java.io.BufferedReader类java.io.BufferedWriter类如何提高文件读写效率25两类缓冲流如何提高文件读写效率25构造方法publicBufferedInputStream(InputStreamin)2048bytespublicBufferedInputStream(InputStreamin,intsize)publicBufferedOutputStream(OutputStreamout)512bytespublicBufferedOutputStream(OutputStreamout,intsize)publicBufferedReader(Readerin)8192bytespublicBufferedReader(Readerin,intsz)publicBufferedWriter(Writerout)8192bytepublicBufferedWriter(Writerout,intsz)如何提高文件读写效率26构造方法如何提高文件读写效率26Stringfilename=“test.txt”;FileInputStreamfis=newFileInputStream(filename);intcount=0;intc;while((c=fis.read())!=-1){ if(c=='A'){ count++; }}fis.close();System.out.println(count);如何提高文件读写效率-实例1如何提高文件读写效率Stringfilename=“test.txt”;FileInputStreamfis=newFileInputStream(filename);BufferedInputStreambis=newBufferedInputStream(fis);intcount=0;intc;while((c=bis.read())!=-1){ if(c=='A'){ count++; }}fis.close();System.out.println(count);FileInputStreamfis=newFileInputStream(“test.txt”);intcount=0;finalintBUFSIZE=1024;bytebuf[]=newbyte[BUFSIZE];intlen;while((len=fis.read(buf))!=-1){for(inti=0;i<len;i++){if(buf[i]=='A'){count++;}}}fis.close();27StringfilenameStringfilename=“test.txt”;FileReaderfr=newFileReader(filename);BufferedReaderbr=newBufferedReader(fr);intcount=0;while(br.readLine()!=null){ count++;}br.close();System.out.println(count);如何提高文件读写效率-实例2如何提高文件读写效率28Stringfilename=“test.概述流的包装(wrap)FileReaderfr=newFileReader(filename);BufferedReaderbr=newBufferedReader(fr);BufferedReaderbr=newBufferedReader(newFileReader(filename));PrintWriterout=newPrintWriter( newBufferedWriter(newFileWriter(filename)));publicStringreadLine()injava.io.BufferedReaderpublicvoidprintln(Stringx)injava.io.PrintWriter利用不同流的特点(方法)寻找合适的方法完成特定的需求对已有的流进行再处理29概述流的包装(wrap)FileReaderfr流的种类节点流直接对数据源进行读/写操作的流处理流对一个已有的流进行某种操作的流流的包装(wrap)30流的种类流的包装(wrap)30节点流FileInputStream,PipedInputStream,ByteArrayInputStream,StringBufferInputStreamFileOutputStream,PipedOutputStream,ByteArrayOutputStreamCharArrayReader,FileReader,PipedReader,StringReaderCharArrayWriter,FileWriter,PipedWriter,StringWriter流的包装(wrap)31节点流流的包装(wrap)31处理流FilterOutputStream,DataOutputStream,BufferedOutputStream,PrintStreamFilterInputStream,DataInputStream,BufferedInputStream,BufferedReader,InputStreamReader,FilterReaderBufferedWriter,OutputStreamReader,FilterWriter,PrintWriter流的包装(wrap)32处理流流的包装(wrap)32一个实例java.io.FileReaderpublicFileReader(Filefile)throwsFileNotFoundExceptionpublicFileReader(StringfileName)throwsFileNotFoundExceptionjava.io.BufferedReaderpublicBufferedReader(Readerin)8192bytespublicBufferedReader(Readerin,intsz)流的包装改变了流的行为流的包装(wrap)33一个实例流的包装(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);}}publicstaticfinalInputStreamin(java.lang.System)publicInputStreamReader(InputStreamin)publicBufferedReader(Readerin)34流的包装(wrap)-实例1流的包装(wrap)import概述java.io.DataInputStream类publicDataInputStream(InputStreamin)publicfinalbooleanreadBoolean()publicfinalbytereadByte()publicfinalcharreadChar()publicfinalintreadInt()java.io.DataOutputStream类publicDataOutputStream(OutputStreamout)publicfinalvoidwriteBoolean(booleanv)publicfinalvoidwriteByte(intv)publicfinalvoidwriteChar(intv)publicfinalvoidwriteInt(intv)基本数据转换流35概述基本数据转换流35DataOutputStreamout=newDataOutputStream(newFileOutputStream("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; StringBufferdesc=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.998JavaMug36DataOutputStreamout=newDat概述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概述目录管理37方法publicbooleancanWrite()/canRead()publicbooleanexists()publicbooleandelete()删除文件或目录,若删除目录,要求该目录必须为空publicbooleancreateNewFile()创建一个空文件,当且仅当该文件不存在publicbooleanisDirectory()/isFile()/isHidden()publiclonglastModified()/publicbooleansetLastModified(longtime)publicString[]list()得到当前目录下的所有文件名和目录名,若该File对象不是表示目录,则返回nullpublicbooleanmkdir()/mkdirs()创建一个目录publicbooleanrenameTo(Filedest)publicbooleansetReadOnly()目录管理38方法目录管理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.Fi目录管理—方法举例目录管理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;} publicbooleanaccept(Filedir,Stringname){ Stringf=newFile(name).getName(); returnf.indexOf(key)!=-1; }}java.util.FilenameFilter接口publicbooleanaccept(Filedir,Stringname);//是否指定的文件应包含在文件列表中publicStringgetName()injava.io.File//获得文件或目录名,仅仅是最后的部分40目录管理—方法举例目录管理importjava.io.Fi随机访问文件(RandomAccessFile)java.io.RandomAccessFile类读写操作在同一个类中完成,须在构造对象时指定参数通过移动文件指针(filepointer)在文件的指定位置进行读写操作构造方法publicRandomAccessFile(Stringname,Stringmode)throwsFileNotFoundExceptionpublicRandomAccessFile(Filefile,Stringmode)throwsFileNotFoundExceptionmode:“r”,“rw”随机访问文件41随机访问文件(RandomAccessFile)随机访问方法publicvoidseek(longpos)publicintread()publicintread(byte[]b)publicintread(byte[]b,intoff,intlen)publicfinalbooleanreadBoolean()/readByte()/readChar()/readShort()/readInt()/readDouble()/readFloat()publicfinalStringreadLine()publicvoidwrite(intb)publicvoidwrite(byte[]b)publicvoidwrite(byte[]b,intoff,intlen)publicfinalvoidwriteBoolean()/writeByte()/writeChar()/writeShort()/writeInt()/writeDouble()/writeFloat()随机访问文件42方法随机访问文件42随机访问文件(RandomAccessFile)-实例随机访问文件RandomAccessFilerf=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随机访问文件(RandomAccessFile)-实例随文件的特性读和写的权限文件长度修改时间是否是目录java.io.File类设定文件属性查询文件属性文件属性44文件的特性文件属性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());System.out.println("canonicalpath="+testfile.getCanonicalPath());}}45文件属性获取文件路径importjava.io.*;45文件属性获取文件修改时间importjava.io.*;importjava.util.*;publicclassAttrDemo2{ publicstaticvoidmain(String[]args)throwsIOException{ Filetestfile=newFile("testfile2");testfile.delete();testfile.createNewFile();longmodtime=testfile.lastModified();System.out.println("lastmodificationtime#1="+newDate(modtime));testfile.setLastModified(0);modtime=testfile.lastModified();System.out.println("lastmodificationtime#2="+newDate(modtime)); }}46文件属性获取文件修改时间importjava.io.*;文件属性获取和设定文件长度importjava.io.*;publicclassAttrDemo3{publicstaticvoidmain(String[]args)throwsIOException{Filetestfile=newFile("testfile3");testfile.delete();testfile.createNewFile();System.out.println("length#1="+testfile.length());RandomAccessFileraf=newRandomAccessFile("testfile3","rw");raf.setLength(100);raf.close();System.out.println("length#2="+testfile.length());}}47文件属性获取和设定文件长度importjava.io.*;文件属性设置读写权限importjava.io.*;publicclassAttrDemo4{publicstaticvoidmain(String[]args)throwsIOException{Filetestfile=newFile("testfile4");testfile.delete();testfile.createNewFile();if(testfile.canRead())System.out.println("filecanberead#1");if(testfile.canWrite())System.out.println("filecanbewritten#1");testfile.setReadOnly();if(testfile.canRead())System.out.println("filecanberead#2");if(testfile.canWrite())System.out.println("filecanbewritten#2");}}48文件属性设置读写权限importjava.io.*;48第八章结束!49第八章结束!49Java技术基础50Java技术基础1第八章输入输出概念JavaI/O类JavaI/O操作标准输入/输出文件读写操作目录管理随机访问文件文件属性51第八章输入输出概念2概念I/O来源控制台(console,如DOS窗口)打印/读入文件(file)读/写网络接口(TCP/UDP端口)读/写针对数据的读写以流(stream)的方式对数据进行操作数据源程序读出数据流目的程序写入数据流流的重要特性顺序读/写sequentially52概念I/O来源数据源程序读出数据流目的程序写入数据流流的概念读/写流的一般流程读(Reading)openastream//打开读出流whilemoreinformation//判断readinformation//读closethestream//关闭流写(Writing)openastream//打开写入流whilemoreinformation//判断writeinformation//写closethestream//关闭流53概念读/写流的一般流程4概念两种流的定义(读取信息的基本数据单位)字节流(bytestream):一个字节(8-bit)一个字节读/写字符流(characterstream):一个字符一个字符读/写(具有特定字符编码的数据)java语言6A617661D3EFD1D4以字节流的方式读:读8次,8个字节以字符流的方式读:读6次,6个字符54概念两种流的定义(读取信息的基本数据单位)ja第八章文件输入输出概念JavaI/O类JavaI/O操作标准输入/输出文件读写操作目录管理随机访问文件文件属性55第八章文件输入输出概念6JavaI/O类字节流的读/写操作(来自JDK1.0)java.io.InputStream(抽象类)publicabstractintread()publicintread(byteb[])publicintread(byteb[],intoffset,intlength)到达流的终点,无数据读出则返回-1java.io.OutputStream(抽象类)publicabstractvoidwrite(intb)publicvoidwrite(byteb[])publicvoidwrite(byteb[],intoffset,intlength)所有的读/写函数都抛出java.io.IOException56JavaI/O类字节流的读/写操作(来自JDK1.0)7JavaI/O类字符流的读/写操作(来自JDK1.1)java.io.Reader(抽象类)publicintread()publicintread(charcbuf[])publicabstractintread(charcbuf[],intoffset,intlength)到达流的终点,无数据读出则返回-1java.io.Writer(抽象类)publicvoidwrite(intc)publicvoidwrite(charcbuf[])publicvoidwrite(charcbuf[],intoffset,intlength)所有的读/写函数都抛出java.io.IOException57JavaI/O类字符流的读/写操作(来自JDK1.1)8JavaI/O类I/O流的层次关系classjava.io.InputStream的子类classjava.io.ByteArrayInputStreamclassjava.io.FileInputStreamclassjava.io.FilterInputStreamclassjava.io.BufferedInputStreamclassjava.io.DataInputStreamclassjava.io.ObjectInputStreamclassjava.io.PipedInputStreamclassjava.io.SequenceInputStream………58JavaI/O类I/O流的层次关系9JavaI/O类I/O流的层次关系classjava.io.OutputStream的子类classjava.io.ByteArrayOutputStreamclassjava.io.FileOutputStreamclassjava.io.FilterOutputStreamclassjava.io.BufferedOutputStreamclassjava.io.DataOutputStreamclassjava.io.PrintStreamclassjava.io.ObjectOutputStreamclassjava.io.PipedOutputStream………59JavaI/O类I/O流的层次关系10JavaI/O类I/O流的层次关系classjava.io.Reader的子类classjava.io.BufferedReader
classjava.io.CharArrayReaderclassjava.io.FilterReader classjava.io.InputStreamReader classjava.io.FileReaderclassjava.io.PipedReaderclassjava.io.StringReader………60JavaI/O类I/O流的层次关系11JavaI/O类I/O流的层次关系classjava.io.Writer的子类classjava.io.BufferedWriterclassjava.io.CharArrayWriterclassjava.io.FilterWriterclassjava.io.OutputStreamWriterclassjava.io.FileWriterclassjava.io.PipedWriterclassjava.io.PrintWriterclassjava.io.StringWriter………61JavaI/O类I/O流的层次关系12JavaI/O类I/O流的分类(12个功能类)I/O类型所用到的类描述文件FileReader/FileWriterFileInputStream/FileOutputStream文件流(读/写文件)缓冲BufferedReader/BufferedWriterBufferedInputStreamBufferedOutputStream提高读/写效率打印PrintWriterPrintStream
(System.out.println())内存CharArrayReader/CharArrayWriterByteArrayInputStreamByteArrayOutputStreamStringReader/StringWriterStringBufferInputStream读/写内存62JavaI/O类I/O流的分类(12个功能类)I/O类型JavaI/O类I/O流的分类(12个功能类)I/O类型所用到的类描述字节流和字符流的转换InputStreamReaderOutputStreamWriter将InputStream中读入的字节转为字符/将字符转为字节写入OutputStream管道pipePipedReader/PipedWriterPipedInputStream/PipedOutputStream程序、进程通讯连接ConcatenationSequenceInputStream多个输入流连接为一个输入流对象串行化ObjectInputStreamObjectOutputStreamObjectSerialization63JavaI/O类I/O流的分类(12个功能类)I/O类型JavaI/O类I/O流的分类(12个功能类)I/O类型所用到的类描述基本数据转化DataInputStreamDataOutputStreamJAVA基本数据类型的读/写计数LineNumberReaderLineNumberInputStream读操作时记录行数PeekingAheadPushbackReaderPushbackInputStream可回退缓存(pushbackbuffer)过滤FilterReader/FilterWriterFilterInputStream/FilterOutputStream在读/写操作时对数据进行过滤64JavaI/O类I/O流的分类(12个功能类)I/O类型第八章文件输入输出概念JavaI/O类JavaI/O操作标准输入/输出文件读写操作目录管理随机访问文件文件属性65第八章文件输入输出概念16JavaI/O操作主要内容标准输入/输出控制台屏幕打印和键盘读入文件I/O操作文件读写如何提高文件读写效率流的包装(Wrap)基本数据转换流目录管理随机访问文件(RandomAccessFile)文件属性网络流操作66JavaI/O操作主要内容17输出:控制台屏幕打印classTest{ publicstaticvoidmain(Stringargs[]){ System.out.println(“HelloWorld!”); }}标准输入/输出67输出:控制台屏幕打印标准输入/输出18输入:键盘读入importjava.io.IOException;classTest{ publicstaticvoidmain(Stringargs[])throws IOException{ byte[]b=newbyte[10]; System.out.println("Receivednumber="+System.in.read(b)); }}标准输入/输出C:\>javaTestAReceivednumber=3C:\>68输入:键盘读入标准输入/输出C:\>javaTest19文件读/写流程打开文件流条件判断读出/写入关闭文件流两种类型文件FileInputStream/FileOutputStream(字节流)FileReader/FileWriter(字符流)文件读写操作69文件读/写流程文件读写操作20字节流构造方法publicFileInputStream(Filefile)throwsFileNotFoundExceptionpublicFileInputStream(Stringname)throwsFileNotFoundExceptionpublicFile(Stringpathname)publicFileOutputStream(Filefile)throwsFileNotFoundExceptionpublicFileOutputStream(Filefile,booleanappend)throwsFileNotFoundException//是否向已存在的文件后添加publicFileOutputStream(Stringname)throwsFileNotFoundExceptionpublicFileOutputStream(Stringname,booleanappend)throwsFileNotFoundException文件读写操作70字节流构造方法文件读写操作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,intlen)throwsIOExceptionFileInputStreamin=newFileInputStream(“original.txt");FileOutputStreamout=newFileOutputStream(“result.txt");publicvoidwrite(intb)throwsIOExceptionpublicvoidwrite(byte[]b)throwsIOExceptionpublicvoidwrite(byte[]b,intoff,intlen)throwsIOException71文件读写-实例1文件读写操作importjava.io.*字符流构造方法publicFileReader(Filefile)throwsFileNotFoundExceptionpublicFileReader(StringfileName)throwsFileNotFoundExceptionpublicFile(Stringpathname)publicFileWriter(Filefile)throwsIOExceptionpublicFileWriter(Filefile,booleanappend)throwsIOExceptionpublicFileWriter(StringfileName)throwsIOExceptionpublicFileWriter(StringfileName,booleanappend)throwsIOException文件读写操作72字符流构造方法文件读写操作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,intlen)throwsIOExceptionpublicvoidwrite(intb)throwsIOExceptionpublicvoidwrite(char[]cbuf)throwsIOExceptionpublicvoidwrite(char[]cbuf,intoff,intlen)throwsIOException73文件读写-实例2文件读写操作importjava.io.*两类缓冲流针对字节流java.io.BufferedInputStream类java.io.BufferedOutputStream类针对字符流java.io.BufferedReader类java.io.BufferedWriter类如何提高文件读写效率74两类缓冲流如何提高文件读写效率25构造方法publicBufferedInputStream(InputStreamin)2048bytespublicBufferedInputStream(InputStreamin,intsize)publicBufferedOutputStream(OutputStreamout)512bytespublicBufferedOutputStream(OutputStreamout,intsize)publicBufferedReader(Readerin)8192bytespublicBufferedReader(Readerin,intsz)publicBufferedWriter(Writerout)8
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 冠心病支架患者的护理
- 外科胃肠疾病病人的护理
- 市妇幼保健院DRG改革工作实施方案
- 《呼吸皮囊的使用》课件
- 医疗物品归类
- 《组织协调能力》课件
- 医院助理全科培训工作安排
- 中班数学活动花园迷宫
- 基本医生述职报告
- 公安审计课件
- 山西省灵丘县山西省刁泉银铜矿业有限公司银、铜矿资源开发利用、地质环境保护与土地复垦方案附件
- CQI-12涂装系统评审
- 初一数学考试重点100题(附答案解析)6
- 教学课件 国际货运代理-肖旭
- 中国图书馆分类法讲座
- 教学评一体化的教学案例 课件
- 《语言学概论》第五章 语义和语用
- 内科学教学课件:Tuberculous Meningitis (TBM)
- 导读工作总结优秀范文5篇
- 超声波UTⅠ级考试题库2023
- SB/T 10851-2012会议中心运营服务规范
评论
0/150
提交评论