JAVA程序设计(1).ppt
《JAVA程序设计(1).ppt》由会员分享,可在线阅读,更多相关《JAVA程序设计(1).ppt(84页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Java程序设计程序设计Java ProgrammingSpring,2010计算机应用(专)Java的输入输出与文件处理 第10章2通过本章的学习,主要掌握以下知识点:通过本章的学习,主要掌握以下知识点:流的概念流的概念 基本的输入输出流基本的输入输出流 标准输入输出标准输入输出 ReaderReader和和WriterWriter流类流类 对文件的随机访问对文件的随机访问 本章的重点:本章的重点:流的应用流的应用本章的难点:本章的难点:流的应用流的应用 3I/Ol输入(Input)/输出(Output)系统,简称为I/O系统,l对于输入/输出问题,Java将之抽象化为流(Stream)对象
2、来解决,对不同的输入/输出问题,提供了相应的流对象解决的方案。l流式输入输出的特点是数据的获取和发送沿数据序列的顺序进行,即每一个数据都必须等待排在它前面的数据,等前面的数据读入或送出之后才能被读写。410.1 Java10.1 Java的输入输出类库的输入输出类库l 利利用用java.io类类库库中中所所提提供供的的输输入入输输出出类类,Java程程序序不不但但可可以以很很方方便便地地实实现现多多种种输输入入输输出出操操作作,而而且且还还可可实实现现对对复复杂杂的的文文件件与与目目录录的的管管理理。5java.io 包ljava.io包中定义与输入、输出流相关的类和接口,构成了Java语言的
3、I/O框架。ljava.io包中定义的各种各样的输入输出流类,它们都是Object类的直接或间接子类,每一个流类代表一种特定的输入或输出流。importjava.io.*;6流的类结构l流的实现是在java.io包的类层次结构上。以四个顶层抽象类为基础,衍生出系列具体的类,来完成各种输入/输出。l InputStream,OutputStream:用于字节的读/写。l Reader,Writer:用于文本(字符)的读/写。l 实际使用的是它们的子类的对象。ObjectInputStreamOutputStreamReaderWriterFileRandomAccessFile710.1.1 流
4、的概念l流流(Stream)是指计算机各部件之间的数据流动。是指计算机各部件之间的数据流动。l按照数据的传输方向,流可分为按照数据的传输方向,流可分为输入流与输出流输入流与输出流。lJava里里的的流流序序列列中中的的数数据据既既可可以以是是未未经经加加工工的的原原始始二二进进制制数数据据,也也可可以以是是经经过过一一定定编编码码处处理理后后符符合合某某种种格格式规定的特定数据。式规定的特定数据。8什么是流l流是数据的有序序列。l流可分为输入流和输出流:输入流指从某个数据来源输入的数据序列,InputStream和Reader处理输入 输出流指将向某个数据目的地输出的数据序列,OutputSt
5、ream和Writer处理输出 9输入流、输出流输入流、输出流l输入流、输出流分别如下图所示。输入流示意图输入流示意图数据宿数据宿程序程序输出流输出流数据源数据源程序程序输入流输入流输出流示意图输出流示意图1010.1.2 10.1.2 输入输出流类库输入输出流类库lJavaJava的的流流类类都都封封装装在在java.iojava.io包包中中,在在该该类类库库中的每一个类都代表了一种特定的输入或输出流。中的每一个类都代表了一种特定的输入或输出流。11字符流字符流和和字节流字节流ljava.io包中类和接口从功能上主要分为字符流类型和字节流类型字符(character)流是指数据序列的基本构
6、成单位是16位的Unicode字符数据,如各类基于字符编码的文本文件。字节(byte)流是指数据序列的基本构成单位是8位的字节数据,如各类基于二进制数据的文件。12文本文件文本文件(Text Files)vs.二进制文件二进制文件(Binary Files)l文本文件:Three bytes:“1”,“2”,“7”ASCII(binary):00110001,00110010,00110111l二进制文件:非字符文件,如:图片、声音、word文档。1310.2 使用InputStream和OutputStream流类l字节流可分为输入字节流和输出字节流抽象类 InputStream 用于表示所
7、有输入字节流抽象类 OutputStream 用于表示所有输出字节流lInputStreamInputStream和和OutputStreamOutputStream类是类是JavaJava里用来处理以里用来处理以位位(bit)(bit)为主的流,也就是说,除了纯文本文件之外,它为主的流,也就是说,除了纯文本文件之外,它们也可用来处理二进制文件们也可用来处理二进制文件(binary file)(binary file)的数据。的数据。14InputStream和和OuputStream两个抽象类的子类两个抽象类的子类1510.2.1 基本的输入输出流1InputStream流类流类 Input
8、Stream流类中包含一套所有输入都需要的方法,可以完成最基本的从输入流读入数据的功能。16InputStream类l该抽象类作为所有输入字节流类的基类,声明用于读取字节该抽象类作为所有输入字节流类的基类,声明用于读取字节流数据的通用方法。流数据的通用方法。lpublicabstractintread()throwsIOException;lpublicintread(bytebuf,intoffset,intcount)throwsIOException;lpublicintread(bytebuf)throwsIOException;lpubliclongskip(longcount)th
9、rowsIOException;lpublicintavailable()throwsIOException;lpublicvoidclose()throwsIOException;17表表10.1 10.1 InputStreamInputStream类的常用方法类的常用方法方方法法功功能能说说明明publicintread()从从输输入流中的当前位置入流中的当前位置读读入一个字入一个字节节(8-bit)的二的二进进制数据,然后制数据,然后以此数据以此数据为为低位字低位字节节,配上配上8个全个全0的高位字的高位字节节合成一个合成一个16位的整位的整型量型量(0255)返回返回给调给调用此方法
10、的用此方法的语语句句,若,若输输入流中的当前位置入流中的当前位置没有数据,没有数据,则则返回返回-1。publicintread(byteb)从从输输入流中的当前位置入流中的当前位置连续读连续读入多个字入多个字节节保存在数保存在数组组b中,同中,同时时返回所返回所读读到的字到的字节节数。数。publicintread(byteb,intoff,intlen)从从输输入流中的当前位置入流中的当前位置连续读连续读入入len个字个字节节,从数,从数组组b的第的第off+1个元素位置个元素位置处处开始存放,同开始存放,同时时返回所返回所读读到的字到的字节节数。数。publicintavailable(
11、)返回返回输输入流中可以入流中可以读读取的字取的字节节数。数。publiclongskip(longn)使位置指使位置指针针从当前位置向后跳从当前位置向后跳过过n个字个字节节。publicvoidmark()在当前位置在当前位置处处做一个做一个记记号。号。publicvoidreset()将位置指将位置指针针返回到返回到标记标记的位置。的位置。publicvoidclose()关关闭输闭输入流与外入流与外设设的的连连接并接并释释放所占用的系放所占用的系统资统资源。源。18InputStream类 l当创建InputStream类对象时,便自动打开了对象所表示的输入流lInputStream所有
12、与输入相关的方法声明抛出异常类IOExceptionlInputStream类的对象在完成数据输入后,除标准输入流类对象System.in外,必须调用close方法关闭输入流,通常可将该方法的调用放入finally语句块中。192 2OutputStreamOutputStream流类流类 OutputStreamOutputStream类类中中包包含含一一套套所所有有输输出出都都需需要要的的方方法法,可可以以完完成成最最基基本本的的向向输输出出流流写写入入数数据据的的功功能能,其其中中常常用用的方法及功能见表的方法及功能见表10.210.2。20OutputStream类类l该抽象类作为所有
13、输出字节流类的基类,声明用于输出字节流数据的通用方法:lvoidwrite(intb)throwsIOException;lpublicvoidwrite(bytebuf,intoffset,intcount)throwsIOException;lvoidwrite(byteb)throwsIOException;lvoidflush()throwsIOException;lvoidclose()throwsIOException;21表表10.2 OutputStream类的常用方法类的常用方法 方方法法功功能能说说明明publicvoidwrite(intb)将参数将参数b的低位字的低位字
14、节节写入到写入到输输出流。出流。publicvoidwrite(byteb)将字将字节节数数组组b中的全部字中的全部字节节按按顺顺序写入到序写入到输输出出流。流。publicvoidwrite(byteb,intoff,intlen)将字将字节节数数组组b中第中第off+1个元素开始的个元素开始的len个数据,个数据,顺顺序地写入到序地写入到输输出流。出流。publicvoidflush()强强制清空制清空缓缓冲区并冲区并执执行向外行向外设设写操作。写操作。publicvoidclose()关关闭输闭输出流与外出流与外设设的的连连接并接并释释放所占用的系放所占用的系统统资资源。源。22l由于由
15、于InputStreamInputStream、OutputStreamOutputStream是抽象类,所以是抽象类,所以在具体应用时使用的都由它们所派生的子类;在具体应用时使用的都由它们所派生的子类;l不同的子类,用于不同情况的数据输入输出操作。不同的子类,用于不同情况的数据输入输出操作。10.2.2 10.2.2 输入输出流的应用输入输出流的应用231 1文件输入输出流文件输入输出流l文件输入流文件输入流FileInputStreaml文件输出流文件输出流FileOutputStreaml主要负责完成主要负责完成对本地磁盘文件对本地磁盘文件的顺序输入输出操的顺序输入输出操作作。24Inp
16、utStream和和OuputStream两个抽象类的子类两个抽象类的子类25文件的读写文件的读写lFileOutputStream/FileInputStream 是抽象类InputStream/OutputStream的子类.l它们生成与它们生成与文件文件链接的链接的字节流字节流。l为打开文件,只需创建为打开文件,只需创建FileOutputStream/FileInputStream类的一类的一个对象,个对象,在构造函数中以参数形式指定文件的名称。在构造函数中以参数形式指定文件的名称。FileInputStreamFileInputStream不支持不支持mark/resetmark/r
17、eset操作操作 26文件的读写文件的读写lFileInputStream类和FileOutputStream类的构造函数是创建一个输入输出的对象,通过引用该对象的读写方法,来完成对文件的输入输出操作。l在构造函数中,需要指定与所创建的输入输出对象相连接的文件。l要构造一个FileInputStream对象,所连接的文件必须存在而且是可读的;l构造一个FileOutputStream对象如果输出文件已经存在且可写,该文件内容会被新的输出所覆盖。27v Java文件路径的表示:vJava约定是用UNIX和URL风格的斜线(/)来作路径分隔符;v“c:/java/test.java”v如果用Win
18、dows/DOS所使用的反斜线()的约定,则需要在字符串内使用它的转义序列()。v“c:javatest.java”28FileInputStream类l从InputStream中派生出来,其所有方法都从InputStream类继承而来。u基本操作步骤:1建立文件的输入流对象 2从输入流中读取字节 3关闭流l常用构造方法 publicFileInputStream(Stringname)throwsFileNotFoundExceptionpublicFileInputStream(Filefile)throwsFileNotFoundException 均会抛出FileNotFoundExc
19、eption异常 构造方法参数指定的文件称作输入流的源FileInputStream fin=new FileInputStream(“c:javatest.java”);29FileInputStream:文件字节流的读取lread方法给程序提供从输入流中读取数据的基本方法。lread方法将顺序读取流,直到流的末尾或流被关闭(close()方法)。lread方法的格式 publicintread()throwsIOExceptionl从输入流中顺序读取单个字节的数据,以int类型返回;如果已到达文件末尾,则返回-1。publicintread(byteb)throwsIOException;
20、publicintread(byteb,intoff,intlen);throwsIOExceptionl把多个字节读到一个字节数组中,返回实际所读的字节数。30FileInputStream例例1/*classexampleFileIn.java*/importjava.io.*;publicclassFileInpublicstaticvoidmain(Stringargs)tryFileInputStreamfin=newFileInputStream(“c:javatest.java”);intinput;while(input=fin.read()!=-1)System.out.pr
21、int(char)input);fin.close();catch(IOExceptionie)System.out.println(e);31FileInputStream例例2/*classexampleFileIn_Out.java*/*assumeseachcharisasinglebyte*/importjava.io.*;publicclassFileIn_Outpublicstaticvoidmain(Stringargs)try FileInputStreamfin=newFileInputStream(“c:javafile1.java”);FileOutputStreamf
22、out=newFileOutputStream(“c:javafile1.java”);byteb=newbyte512;while(fin.read(b,0,512)!=-1)fout.write(b);fin.close();fout.close();catch(IOExceptionie)System.out.println(ie);catch(Exceptione)System.out.println(e);32FileOutputStream类l从OutputStream中派生出来,其所有方法都从OutputStream类继承来的。u基本操作步骤:1建立文件的输出流对象 2向输出流中
23、写字节 3关闭流l常用构造方法l public FileOutputStream(String name)throws IOException 创建一个文件输出流,向指定名称的文件输出数据。创建一个文件输出流,向指定名称的文件输出数据。如果文件不能为写操如果文件不能为写操作打开作打开,抛出异常。抛出异常。lpublic FileOutputStream(File file)throws IOException 创建一个文件输出流,向指定的创建一个文件输出流,向指定的 File 对象输出数据。对象输出数据。如果文件不能为写打开,抛抛出异常。出异常。l如果输出流要写入数据的文件已经存在,该文件中的
24、数据内容就会被刷新;如果要写入数据的文件不存在,该文件就会被建立。FileOutputStream fout=new FileOutputStream(“c:javatest.java”);33 FileOutputStream类:文件字节流的输出lwrite方法把字节发送给输出流。lwrite方法将顺序地写文件,直到流的末尾或流被关闭(close()方法)lwrite方法的格式:publicvoidwrite(byteb)throwsIOException;publicvoidwrite(byteb,intoff,intlen)throwsIOException;34/*例:编写程序,接收用
25、户从键盘输入的数据,回车后保存到例:编写程序,接收用户从键盘输入的数据,回车后保存到文件文件test.txt中。若用户输入符号中。若用户输入符号#,则退出程序。,则退出程序。*/importjava.io.*;publicclassWriteFilepublicstaticvoidmain(Stringargs)bytebuffer=newbyte128;System.out.println(请输入数据,回车后保存到文件请输入数据,回车后保存到文件test.txt);System.out.println(输入输入#则退出!则退出!);tryFileOutputStreamf=newFileOu
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA 程序设计
限制150内