




已阅读5页,还剩46页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Java语言程序设计,Java输入/输出系统,3,I/O软件层,与外部设备和其他计算机进行交流的输入输出操作,尤其是对磁盘的文件的操作,是计算机程序重要而必备的功能,任何计算机语言都必须对输入输出提供支持。Java语言也不例外,它的输入输出类库中包含了丰富的系统工具已定义好的用于不同情况的输入输出类,利用它们,Java程序可以很方便地实现多种输入输出操作和复杂的文件与目录管理。,4,Java.io的核心,文件(File类):用于处理文件与文件系统,并取得时间、日期、目录等与文件有关的信息各种文件系统提供的基本服务一样,但实现细节互不相同。解决Java程序与文件系统的沟通。流线性的顺序的输入输出数据流,与输入输出密不可分,5,标准文件类:File,File类的对象是文件系统中的一个目录或文件的抽象表示。File类对象描述文件路径、名字、长度、可否读写等属性,可用来命名文件、查询文件属性、对目录进行操作,但不读写文件。上述操作都是以独立于系统的方式进行。通过File类对象可以对操作系统的文件进行管理,体现了跨平台不同文件的统一管理,6,File类构造方法,File(Stringpath)封装文件例(使用相对路径,移植性较好)Filef1=newFile(“mydirmyfile.txt”);封装目录例(使用绝对路径)Filef2=newFile(“d:mydirdir1”);File(Stringparent,Stringchild)Filef3=newFile(“d:d1”,“a.java”)File(Filedir,Stringname)Filef4=newFile(f2,“myfile.txt”);,winunix/,7,File类方法获取文件属性,判断目标是否存在publicbooleanexists()判断是文件还是目录publicbooleanisFile();publicbooleanisDirectory();获取文件名称或整个路径publicStringgetName()仅返回文件名publicStringgetPath()返回整个路径字符串获取文件长度publiclonglength()获取文件读写属性publicbooleancanRead()publicbooleancanWrite()列出目录中的文件publicStringlist()publicFilelistFiles(),8,File类方法文件/目录操作,重命名publicbooleanrenameTo(FilenewName)删除文件或目录publicbooleandelete();创建目录publicbooleanmkdir()创建目录及父目录(如果需要的话)publicbooleanmkdirs()创建临时文件publicstaticFilecreateTempFile(文件名,后缀)throwsIOException,1、2,9,File的方法,File类使用一个静态实例变量separator(publicstaticfinalString)保存了当前的目录分隔符。为本机操作系统支持的路径分隔符DOS,Windows“”Unix“/”Filef1=newFile(“Documents”+File.separator+“data.txt”);例:FileOperation.java对文件和目录的简单操作,10,文件的处理,随机访问文件:RandomAccessFile类不属于Input/OutputStream用于访问本地文件可以实现随机访问可读可写同时实现了DataInput和DataOutput接口,可同时进行有格式的读写创建时指定对应某一文件完成读或写操作用于读写一个文件中任意位置的数据视文件如同一个字节类型数组,数组下标即文件指针。读写操作都会移动指针,11,文件I/O类:RandomAccessFile,构造方法RandomAccessFile(Filefile,Stringmode)参数:file一个File对象,它封装了一个同系统相关的文件名mode“r”用于只读;“rw”用于读写RandomAccessFile(Stringname,Stringmode)参数:name文件名(同系统相关)mode“r”用于只读;“rw”用于读写如:RandomAccessFiles1=newRandomAccessFile(“a.txt”,“r”);Filef1=newFile(“a.txt”);RandomAccessFiles2=newRandomAccessFile(f1,“rw”);,12,文件的处理,随机文件读写readXx(),writeXx():实现DataInput/Output接口读写位置:文件指针及其操作方法指针操作longgetFilePointer()返回文件指针的当前位置,即相对于文件头的位移量。单位:字节该位置即下一个读写操作的位置。voidseek(longpos)移动指针(位移单位:字节)将文件指针设置为偏移文件开始的pos字节处,13,文件I/O类:RandomAccessFile,publicintskipBytes(intn)将读取位置跳过n个字节close()关闭文件longlength()取文件长度写文件writeInt(intv)写一个整型数,4个字节,高字节在前,14,文件I/O类:RandomAccessFile,writeBoolean(booleanv)写一个boolean值,一个字节,0或1writeUTF(Stringstr)写一字符串,前两个字节标明字符串字节长度读文件bytereadByte()读取一字节charreadChar()读取一字符(Unicode码2个字节)doublereadDouble()读取一双精度数(8个字节),15,文件I/O类:RandomAccessFile,StringreadUTF()读取一个字符串。readLine()读取以n、r、rn或者EOF终止的一行。然后该行所有字节被转换成一个Unicode字符串,并返回字符串。例:testRandom.java,3方法测试,4学生信息,16,RandomAccessFile,构造方法的例外:IllegalArgumentException(notrorrw)FileNotFoundExceptionSecurityException文件操作例外:EOFException(IOException)读到文件尾IOException虽没有到文件尾,但读不到字符IOException文件已关闭,17,Java的输入/输出,Java的输入/输出机制:流的概念输入/输出流:java.io包中的标准类两个基本抽象类:InputStream,OutputStream基本类中定义了完成基本I/0操作的抽象方法读写操作:read,write关闭流的操作:close送出并清空缓冲区数据的操作:flush,18,Java系统标准输入/输出,用于基本系统操作的类Systempublicfinalclassjava.lang.Systemextendsjava.lang.ObjectSystem类包含三个I/O流成员用于系统标准输入/输出publicstaticInputStreamSystem.inpublicstaticPrintStreamSystem.outpublicstaticPrintStreamSystem.err,19,InputStream输入流,管理字节(适于读取面向字节的数据)是所有表示输入字节流类的父类(抽象类)三个基本方法:abstractintread()从输入流中读取一个字节。intread(byteb)从输入流中读若干个字节到数组中。intread(byteb,intoff,intlen)从输入流中读len个字节到数组中。off是写入数组的位置。,20,InputStream输入流,skip(longn)跳过n个字节。booleanmarkSupported()流是否支持mark功能。mark(intreadlimit)在当前位置做标记。reset()回到最近一次做的标记处。close()关闭输入流,释放与此输入流相连的系统资源。,21,InputStream输入流的子类,加强输入流,对InputStream类进行功能扩充ByteArrayInputStream(byte数组)FileInputStream(文件路径名或File对象)ObjectInputStream(Inputstreamin)PipedInputStream(PipedOutputStreampipe)SequenceInputStream表示其他输入串的逻辑连接FilterInputStream(其他输入流)定义了子类对流的进一步处理功能。BufferedInputStream(InputStreamin)DataInputStream(InputStreamin)各种数据读入,22,OutputStream输出流,抽象类:是所有表示输出字节流类的父类。功能:接受要输出的字节并将它送往目的地。方法:write(intb)往输出流写出b的ASSII字符(一个字节)。write(byteb)将字节数组数据写入输出流。flush()刷新输出流,并使缓冲区中的数据写出。close()关闭输出流,释放与之相连的系统资源。,23,OutputStream输出流子类,FileOutputStream(File类对象或文件名)ByteArrayOutputStream数据被写到无名字节数组,该字节数组内容可利用toByteArray()和toString()分别取到指定字节数组和字符串中。PipedOutputStream(PipedInputStreampipe)ObjectOutputStreamFilterOutputStreamDataOutputStream(OutputStreamout)包含输出各种数据类型数据的方法,如writeFloat()PrintStream(OutputStreamout)包含输出各种数据类型数据的方法,如print(),println。,24,简单的IO流,FileInput/OutputStream代表一个在本地文件系统中的文件的IO流,可通过文件名或文件对象创建。FileInputStreamfis=newFileInputStream(“.in.txt”);FileOutputStreamfos=newFileOutputStream(“.out.txt”);intc:while(c=fis.read()!=-1)fos.write(c);fis.close();fos.close();,25,简单的IO流,SequenceInputStreamSequenceInputStream(InputStream,InputStream)把两个/多个InputStream连接为一个InputStreamByteArrayInput/OutputStream从字节数组读取/向字节数组写入8位数据StringBufferInputStream把一个String转换为InputStream,26,过滤流,FilterInput/OutputStream作用:给朴素的Input/OutputStream加上一些修饰某些有用的格式来源:Input/OutputStream种类:DataInput/OutputStreamBufferedInput/OutputStreamPrintStream其他,27,过滤流,BufferedInput/OutputStream自动利用内存缓冲,不必每次存取外设还可在其外面再加包装newDataInputStream(newBufferedInputStream(newFileInputStream(“File1.txt”);DataInput/OutputStream对于基本数据类型进行有格式的读写DataOutputStream与DataInputStream配套使用才有意义,28,过滤流,实现了DataInput接口readInt/Float/Char/Boolean/Long/Double()readLine()读入的重要方法实现了DataOutput接口writeInt/Float/Char/Boolean/Long/Double()PrintStream对于基本数据类型进行有格式的显示例:DataInputOut.java,29,两种流类,nodestream对指定的地方(磁盘文件、内存等)读/写。filterstream一个filter流使用node流作为输入或输出。,30,基本流类node流,FileInputStreamFileOutputStreamFileInputStreaminfile=newFileInputStream(“old.dat”);FileOutputStreamoutfile=newFileOutputStream(“new.dat”);,31,基本流类filter流,BufferedInputStreamBufferedOutputStream增加I/O操作的有效性DataInputStreamDataOutputStream可以读写Java基本类型的数据bytereadByte()voidwriteByte(byte)longreadLong()voidwriteLong(long)doublereadDouble()voidwriteDouble(double),32,使用I/O流读写文件,输出DataOutputStreamout=newDataOutputStream(newFileOutputStream(test3)写文件:out.writeUTF(wanghong);out.writeFloat(485.2F);输入DataInputStreamin=newDataInputStream(newFileInputStream(test3);读文件:in.readUTF()in.readFloat(),33,字符流-Reader类,是所有读取字符流类的父类抽象类(面向Unicode字符操作)Java使用Unicode码表示字符和字符串。方法:booleanready()输入字符流是否可读intread()读取一个字符intread(charcbuf)读取一串字符(到字符数组)longskip(longn)跳过n个字符mark(intreadAheadLimit)在当前位置做一标记reset()将读取位置恢复到标记处close()关闭字符流,34,Reader类子类,CharArrayReader(charbuf)PipedReader(PipedWriter)StringReader(Strings)BufferedReader(Readerin)提供有效读的方法,如:readLine,35,Writer类,是所有表示输出字符流类的父类(抽象类)。功能:接受要输出的字符并将它送往目的地。方法:write(Stringstr)write(charcbuf)flush()close(),36,Writer类的子类,CharArrayWritertoCharArray()andtoString().StringWriter方法toStringPipedWriterBufferedWriter提高I/O效率方法:write()写字符或字符串PrintWriter(OutputStream类或Writer类对象)方法:printprintln实现各种类型数据的输出,37,文件读写(文本),输入BufferedReaderfin=newBufferedReader(newFileReader(test.txt);读文件fin.readLine()输出PrintWriterfout=newPrintWriter(newFileWriter(test.txt),true);或:PrintWriterfout=newPrintWriter(newBufferedWriter(newFileWriter(“test.txt);写文件fout.println()flush()close(),38,System类及标准输入输出,staticPrintStreamerr标准错误输出流staticInputStreamin标准输入流staticPrintStreamout标准输出流OutputStreamFilterOutputStreamPrintStream提供输出各种类型数据的方法(print,println)不抛出I/O例外(可用checkError方法检测)可设置自动刷新System.out.println(),39,System类及标准输入输出,BufferedReaderstdin=newBufferedReader(newInputStreamReader(System.in);stdin.read()读一个字符StringreadLine()读一行read(charcbuf,intoff,intlen)将指定数量(len)字符读到字符数组中的指定位置(off)InputStreamReader没有readLine()方法BufferedReader(Reader)构造方法,5,40,对象输入输出流,FileOutputStreamfout=newFileOutputStream(t.tmp);ObjectOutputStreamoOut=newObjectOutputStream(fout);oOut.writeInt(12345);oOut.writeObject(Today);oOut.writeObject(newDate();oOut.flush();fout.close();,41,对象输入输出流,FileInputStreamfin=newFileInputStream(t.tmp);ObjectInputStreamoIn=newObjectInputStream(fin);inti=oIn.readInt();Stringtoday=(String)oIn.readObject();Datedate=(Date)oIn.readObject();fin.close();,6,42,管道与流,标准输入/输出改道标准输入/输出()管道将一个程序的标准输出作为另一个程序的标准输入(|)sort对输入数据排序,然后输出,43,输出管道流,构造方法PipedWriter(PipedReadersnk)建立一个与指定pipedreader相连的pipedwriter。PipedWriter()建立一个还未与pipedreader相连的pipedwriter。方法:connect(PipedReadersnk)与指定的pipedreader相连接。write(intc)写指定字符。write(Strings)写指定字符串。,44,输入管道流,构造方法PipedReader(PipedWritersrc)建立一个与指定pipedwriterr相连的pipedreader。PipedReader()建立一个还未与pipedWriter相连的pipedReader。方法:connect(PipedWritersrc)与指定的pipedWriter相连接。read(intc)读指定字符。read(Strings)读指定字符串。,45,管道连接,pw=newPipedWriter(Pipe
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度特色草花品种销售代理合同模板
- 2025年跨境电商B2B业务拓展及合作推广协议
- 2025年新一代工业物联网设备研发与融资合作合同
- 2025高端医疗设备批发供应与全方位维护保养服务合同
- 2025年企业全面预算管理与成本精细化控制合同
- 2025年绿色建筑光伏发电系统安装工程合作协议书
- 2025年现代简约风格家具定制与生产服务合同
- 2025年定制化生产厂房租赁及运营管理服务协议
- 2025年网红饮品店区域代理合作协议
- 2025年度绿色环保产品展位合作开发与推广服务合同
- 风光储储能项目PCS舱、电池舱吊装方案
- 原发性骨质疏松症诊疗指南(2022版)第一部分
- 重庆医科大学附属第一医院改建PET-CT、PET-MR项目环评报告
- 2022水电站计算机监控系统上位机现场验收标准手册
- 政务服务大厅管理规范:安全与应急处置
- 食管癌病人护理查房
- 双重预防机制构建-隐患排查治理(中石化中原油田天然气厂)
- 五牌一图(完整版)
- 二年级下册音乐《每天》教案
- 音乐美学.课件
- 心肺复苏说课比赛课件模板(一等奖)
评论
0/150
提交评论