您好,欢迎访问三七文档
NCEPU输入输出流(1)—概述2019年11月24日星期日NCEPUContents1.概述2.基本数据流类3.Java标准数据流4.文件2019年11月24日星期日NCEPU流的含义流是一个很形象的概念,当程序需要读取数据的时候,就会开启一个通向数据源的流,这个数据源可以是文件,内存,或是网络连接。类似的,当程序需要写入数据的时候,就会开启一个通向目的地的流。这时候你就可以想象数据好像在这其中“流”动一样。数据流是指一组有顺序的、有起点的和终点的字节集合。2019年11月24日星期日NCEPU输入输出流几乎所有的程序都离不开信息的输入和输出,例如从键盘上读取数据、在网络上交换数据、打印报表、读写文件信息等,都要涉及数据输入输出的处理在面向对象的语言中,输出输出是通过数据流来实现的2019年11月24日星期日NCEPU输入输出概述数据流是指一组有顺序的、有起点和终点的字节集合,是对输入输出的总称(或抽象)Java的数据流都包含在java.io包中按粗略的分类,数据流可以分为输入数据流和输出数据流2019年11月24日星期日NCEPU输入输出流概述输入数据流只能读不能写,通常在程序中通过输入流来读取从键盘或文件中获得的数据输出数据流只能写不能读,通常在程序中将字节写入输出流,来实现向显示器、打印机或文件中传输数据如图所示:程序键盘文件显示器打印机文件输入流输出流2019年11月24日星期日NCEPUJava流式输入输出原理2019年11月24日星期日NCEPUJava流式输入输出原理文件程序2019年11月24日星期日NCEPU输入输出流概述使用数据流的目的是,使程序的输入和输出操作独立于相关设备,使得程序能够用于多种I/O设备,不需要对源代码设置目标代码做任何修改,从而增强程序的可移植性2019年11月24日星期日NCEPU输入输出流概述java.io包支持两种类型的数据流:二进制字节流和字符流,以4个抽象类表示:输入流输出流字节流InputStreamOutputStream字符流ReaderWriter2019年11月24日星期日输入输出流概述分类按数据流的方向不同可以分为输入流和输出流按处理数据单位不同可以分为字节流和字符流按照功能不同可以分为节点流和处理流NCEPU2019年11月24日星期日输入输出流概述节点流和处理流NCEPU2019年11月24日星期日NCEPUJava的标准数据流标准输入输出是指在字符方式下(例如DOS),程序与系统进行交互的方式,分为三种:标准输入stdin,对象是键盘标准输出stdout,对象是显示屏标准错误输出stderr,对象是显示屏2019年11月24日星期日NCEPUJava的标准数据流Java通过系统类System实现标准输入输出的功能系统类System在java.lang包中:publicfinalclassSystemextendsObjectSystem类没有构造方法,其中的常量和方法都是静态的System类不能创建对象,可以直接使用2019年11月24日星期日NCEPUJava的标准数据流System中有三个成员变量:publicstaticfinalInputStreaminpublicstaticfinalPrintStreamoutpublicstaticfinalPrintStreamerr2019年11月24日星期日NCEPUJava的标准数据流通常可以使用下面方法进行在屏幕上的输出:Systme.out.println()Systme.out.print()可以使用下面方法获得从键盘上得到的输入Systme.in.read()Systme.in.skip(longl)2019年11月24日星期日NCEPU第三节Java的标准数据流importjava.io.*;publicclassExampleInput{publicstaticvoidmain(Stringargs[])throwsIOException{System.out.println((char)System.in.read());System.in.skip(3);System.out.println((char)System.in.read());}}若输入为:ABCDEFG回车后,屏幕上输出:AE2019年11月24日星期日NCEPU文件什么是文件?文件可以认为是相关记录或存放在一起的数据的集合;文件一般存放在硬盘、软盘和光盘等等。2019年11月24日星期日NCEPU文件在java.io包中,包含了两个文件类,用来记载文件信息,是文件和目录路径名的抽象表示。1.File类:以顺序的方式访问文件2.RandomAccessFile类:以随机的方式访问文件2019年11月24日星期日NCEPU文件File类提供了获得文件基本信息(如:是否可读/写、文件路径、文件长度等),以及操作文件(如:创建文件、改变文件名、删除文件等)的工具Java把文件目录也当作一种特殊的文件,即文件名的列表2019年11月24日星期日NCEPUFile类的常用方法方法原型说明booleanexists()判断文件是否存在,存在返回true,否则返回falsebooleanisFile()判断是否为文件,是文件返回true,否则返回falsebooleanisDirectory()判断是否为目录,是目录返回true,否则返回falseStringgetName()获得文件的名称StringgetAbsolutePath()获得文件的绝对路径longlength()获得文件的长度(字节数)booleancreateNewFile()throwsIOException创建新文件,创建成功返回true,否则返回false,有可能抛出IOException异常,必须捕捉booleandelete()删除文件,删除成功返回true,否则返回false2019年11月24日星期日NCEPU文件1.构造方法publicFile(Stringpathname)pathname指定包含目录的文件名例如:Filef=newFile(a\\b\\myfile)2019年11月24日星期日NCEPU文件1.构造方法publicFile(Stringparent,Stringchild)parent指定目录,child指定文件名例如:Filef=newFile(a\\b,myfile)Filef=newFile(\\c,myfile)2019年11月24日星期日NCEPU文件1.构造方法publicFile(Fileparent,Stringchild)parent指定目录,child指定文件名例如:Filefdir=newFile(a\\b)Filef=newFile(fdir,myfile)2019年11月24日星期日NCEPU文件2.操作文件的方法访问文件对象publicStringgetName()返回不包含路径的文件名publicStringgetPath()返回包含相对路径的文件名publicStringgetAbsolutePath()返回包含绝对路径的文件名2019年11月24日星期日NCEPU文件文件操作publicbooleanrenameTo(Filedest)为文件重命名,若成功则返回ture,否则返回falsepublicbooleandelete()删除文件,若成功则返回ture,否则返回false2019年11月24日星期日NCEPU文件获得文件属性publiclonglength()返回指定文件的字节长度publicbooleanexists()测试指定文件是否存在publiclonglastModified()返回指定文件最后被修改的时间2019年11月24日星期日NCEPU文件目录操作publicbooleanmkdir()创建指定的目录publicString[]list()返回目录中所有文件名字符串publicFile[]listFiles()返回目录中所有文件对象NCEPU输入输出流(2)--实践2019年11月24日星期日NCEPU流的分类InputStream和OutputStream是所有输入输出流的祖先,它们是一个抽象类.System.in和System.out是它们的子类InputStreamFileInputStreamPipedIntputStreamFilterInputStreamByteArrayInputStreamDataInputStreamBufferedInputStreamLineNumberInputStreamSequencedInputStreamStringBufferInputStreamPushbackInputStream2019年11月24日星期日NCEPU流的分类InputStream中的基本方法包括:read,available,mark,skip,reset,markSuppposed,closeOutputStream中的基本方法包括:write,flush,closeOutputStreamFileOutputStreamPipeOutputStreamFilterOutputStreamByteArrayOutputStreamDataOutputStreamBufferedOutputStreamPrintStream2019年11月24日星期日NCEPU能力目标会用字节流和字符流进行文件的顺序访问会使用随机流读写文件2019年11月24日星期日NCEPU本讲案例编写一个程序,输入3个学生的信息(包含姓名、年龄),然后将学生信息存入二进制数据文件student.dat中,并从该文件读取数据,在屏幕上输出文件中学生的所有信息。所需要的知识点创建文件的方法对文件随机访问的方法。2019年11月24日星期日NCEPU输入/输出流操作的步骤(1)使用引入语句引入java.io包:importjava.io.*;(2)根据不同数据源和输入输出任务,建立字节流或字符流对象;(3)若需要对字节或字符流信息组织加工为数据,在已建字节流或字符流对象上构建数据流对象。2019年11月24日星期日NCEPU输入/输出流操作的步骤(4)用输入输出流对象类的成员方法进行读写操作,需要时,设置读写位置指针。(5)关闭流对象。其中步骤(2)~(5)要考虑异常处理。2019年11月24日星期日NCEPU基本的流类FileInputStream和FileOutputStream节点流,用于从文件中读出或往文件中写入字节流。如果在构造FileOutputStream时,文件已经存在,则覆盖这个文件。BufferedInputStream和BufferedOutputStream缓冲流,需要用已经存在的节点流来构造,提供带缓冲的读写,提高了读写的效率。2019年11月24日星期日NCEPU基本的流类DataInputStream和DataOutputStream装饰流(处理流),需要使用已经存在的节点流来构造,提供了读写Java中的基本数据类型的功能。2019年11月24日星期日NCEPU装饰流的使用按照流是否直接连接实际数据源,将流划分为实体流和装饰流两大类。实体流(节点流)指直接连接数据源的流类,如FileReader和FileWriter,实体流类均可单独进行使用。装饰流(处理流)指不直接连接数据源,而是以其它流对象(实体流对象或装饰流对象)为基础建立的流类。比较常用的有DataInputStream/DataOutputStream和BufferedReader/BufferedWriter等。装饰流类不可以单独使用,必须配合实体流或装饰流使用。装饰流不改变原来实体流对象中的数据内容,只是从实体流对象基础上创建出的装
本文标题:java-IO
链接地址:https://www.777doc.com/doc-1842252 .html