华北电力大学教学用ppt-06-IO

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

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包中:publicfinalclassSystemextendsObjectSystem类没有构造方法,其中的常量和方法都是静态的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,否则返回falsepublicbooleandelete()删除文件,若成功则返回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,closeOutputStream中的基本方法包括: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要对文件进行读写,需要使用文件流。Java的文件流类包括:字节流的FileInputStream、FileOutputStream字符流的FileReader、FileWriter文件流操作2019年11月24日星期日NCEPUFileInputStream和FileOutputStream类类FileInputStream和FileOutputStream分别直接继承于InputStream和OutputStream,重写或实现了父类中的一些方法以顺序访问本地文件它是字节流操作的基础类。创建FileInputStream输入流对象成功后,就相应地打开了该对象对应的文件,然后就可以从文件读取信息。2019年11月24日星期日NCEPUFileInputStream类的构造方法构造方法说明FileInputStream(Filefile)throwsFileNotFoundException使用File对象创建文件输入流对象,如果文件打开失败,将抛出异常。FileInputStream(Stringname)throwsFileNotFoundException使用文件名或路径创建文件输入流对象,如果文件打开失败,将抛出异常。2019年11月24日星期日NCEPUFileInputStream类的常用方法方法原型说明intread

1 / 143
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功