java第6章 io流.ppt
《java第6章 io流.ppt》由会员分享,可在线阅读,更多相关《java第6章 io流.ppt(99页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、java第6章 io流 Four short words sum up what has lifted most successful Four short words sum up what has lifted most successful individuals above the crowd: a little bit more. individuals above the crowd: a little bit more. -author -author -date-date课前思考l如何读取硬盘上的某个文件内容?l如何知道文件系统中有哪些目录和子目录?l如何往硬盘上写文件?l如何
2、接收键盘输入?教学目标与外部设备和其它计算机进行交流的输入输出操作,尤其是对磁盘的文件操作,是计算机程序重要的功能,任何计算机语言都必须对输入输出提供支持。Java也不例外,它的输入输出类库中包含了丰富的系统工具,这些类被放在java.io包中。在该类库中,除了定义文件输入输出操作外,还定义了许多用来和其他外设进行信息交换的类。本章将详细介绍I/O类库中的基本内容,主要侧重于文件的输入输出管理和流的基本概念。 流v在计算机中,“流”的概念是1984年由C语言第一次引入的。 “流”可以看作是一个流动的数据缓冲区,数据从数据源流向数据目的地。I/O与流vI/OI/O是程序设计中的重要问题,大部分的
3、应用是程序设计中的重要问题,大部分的应用程序都需要程序都需要I/OI/O操作,比如从键盘获得用户输操作,比如从键盘获得用户输入、在屏幕输出运行结果、对磁盘文件进行入、在屏幕输出运行结果、对磁盘文件进行读写等等。应用程序只有通过读写等等。应用程序只有通过I/OI/O操作才能实操作才能实现与用户的交互及数据的处理及存储现与用户的交互及数据的处理及存储. . v在在JavaJava语言中,将不同类型的语言中,将不同类型的I/OI/O抽象为流。抽象为流。所谓所谓“流(流(streamstream)”,可以看作是数据在,可以看作是数据在文件或程序之间的传递文件或程序之间的传递 输入流和输出流 v一般来说
4、,流有两种基本形式:输入流和输一般来说,流有两种基本形式:输入流和输出流,根据程序是作为数据流的目的端还是出流,根据程序是作为数据流的目的端还是源端来划分。程序首先要打开一个流,才能源端来划分。程序首先要打开一个流,才能与数据文件进行通信。与数据文件进行通信。 v通过输入流,程序可以从数据文件读取数据,通过输入流,程序可以从数据文件读取数据,但不可向输入流中写入数据;反之,通过输但不可向输入流中写入数据;反之,通过输出流,程序可以向数据文件中写入数据。程出流,程序可以向数据文件中写入数据。程序与其他设备间的序与其他设备间的I/OI/O也可以使用流,这时可也可以使用流,这时可将设备看作是一个数据
5、文件。将设备看作是一个数据文件。 Java I/O流类的组织模式 java.iov在在JavaJava开发环境中,主要是由包开发环境中,主要是由包java.iojava.io中提供的一系列的中提供的一系列的类和接口来实现输入类和接口来实现输入/ /输出处理。而标准输入输出处理。而标准输入/ /输出处理则是输出处理则是由包由包java.langjava.lang中提供的类来处理的,这些类又都是从包中提供的类来处理的,这些类又都是从包java.iojava.io中的类继承而来的。中的类继承而来的。vI/OI/O类提供了低层次和高层次的界面。每一种介质都有一对类提供了低层次和高层次的界面。每一种介质
6、都有一对与之相关联的输入输出类,它们提供低层次的面向数据序列与之相关联的输入输出类,它们提供低层次的面向数据序列(字符、字节)的界面(字符、字节)的界面。与介质相关的各个类都分别是输入与介质相关的各个类都分别是输入输出抽象流类的子类,它们通常具有与介质相关的构造器及输出抽象流类的子类,它们通常具有与介质相关的构造器及方法。方法。vI/OI/O抽象类为所有与介质相关的具体输入输出类提供了一个抽象类为所有与介质相关的具体输入输出类提供了一个统一的界面。反过来各个具体的与介质相关的输入输出类也统一的界面。反过来各个具体的与介质相关的输入输出类也扩展了抽象类,通过它们可以实现在具体介质上的输入输出扩展
7、了抽象类,通过它们可以实现在具体介质上的输入输出操作操作 I/O操作的一般步骤 v构造一个与介质相关的构造一个与介质相关的I/OI/O对象,以提供一种对象,以提供一种低层次的方法将数据输入或输出到相应的介低层次的方法将数据输入或输出到相应的介质;质;v将与介质相关的对象强制类型转换为它的父将与介质相关的对象强制类型转换为它的父类(即抽象类(即抽象I/OI/O类),并利用该对象构造一个类),并利用该对象构造一个流对象。这样便建立起了流类对象与介质相流对象。这样便建立起了流类对象与介质相关对象的关联;关对象的关联;v这时就可利用流对象的这时就可利用流对象的I/OI/O方法进行相应介质方法进行相应介
8、质上的数据读写。上的数据读写。字节流与字符流v从流中传输的数据单位分为两类:v字节流从InputStream和OutputStream派生出来的一系列类,以字节(byte)为基本处理单位。v字符流从Reader和Writer派生出的一系列类,以16位的Unicode码表示的字符为基本处理单位。java.lang.ObjectInputStreamSequenceInputStreamByteArrayInputStreamFileInputStreamPipedInputStreamFilterInputStreamPushbackInputStreamStringBufferInputStr
9、eamFileStreamTokenizerRandomAccessFileFileDescriptorOutputStreamByteArrayOutputStreamPipedOutputStreamFileOutputStreamFilterOutputStreamDataOutputStreamPrintStreamBufferOutputStreamLineNumberInputStreamBufferedInputStreamDataInputStream字节流InputStream类vInputStreamInputStream类定义了一套所有字节输入流所需类定义了一套所有字节输
10、入流所需的方法的方法 方法方法描述描述read()read()将数据读入流中将数据读入流中skip()skip()跳过流中的若干字节跳过流中的若干字节available()available()返回当前流中的可用字节返回当前流中的可用字节mark()mark()在流中标记一个位置在流中标记一个位置reset()reset()返回到流中的标记位置返回到流中的标记位置markSupported()markSupported()返回一个返回一个booleanboolean值,描述流是否支持标记和复位值,描述流是否支持标记和复位close()close()关闭流关闭流OutputStream类vOut
11、putStreamOutputStream类定义了一套所有字节输出流类定义了一套所有字节输出流所需的方法。所需的方法。 方法方法描述描述write()写数据到流写数据到流flush()强制将被缓冲的内容写到输出强制将被缓冲的内容写到输出close()关闭流关闭流字符流类Reader与Writer类vReader类的相关方法:类的相关方法:void close()void mark(int readAheadLimit)boolean markSupported()int read() int read(char cbuf) int read(char cbuf, int off, int le
12、n) boolean ready() void reset() long skip(long n) vWriter类的相关方法:类的相关方法:void close() void flush() void write(char cbuf) void write(char cbuf, int off, int len) void write(int c) void write(String str) void write(String str, int off, int len) 各种流的作用概述I/O类型类型流流作用作用内存CharArrayReaderCharArrayWriterByteAr
13、rayInputStreamByteArrayOutputStream用来从内存读取数据或向内存写入数据StringReaderStringWriterStringBufferInputStream从内存里的某个String或StringBuffer读字符或字节管道PipedReaderPipedWriterPipedInputStreamPipedOutputStream实现一个输入、输出管道。管道可用于一个线程的输出连接到另一个线程的输入各种流的作用概述文件文件FileReaderFileWriterFileInputStreamFileOutputStream用于对本机文件系统上的一个用
14、于对本机文件系统上的一个件行读写件行读写联结联结N/ASequenceInputStream将多个输入流联结成为一个输将多个输入流联结成为一个输入流入流对象串行化对象串行化N/AObjectInputStreamObjectOutputStream将对象串行化将对象串行化数据转换数据转换N/ADataInputStreamDataOutputStream以一种与机器无关的格式读写以一种与机器无关的格式读写原始数据类型原始数据类型各种流的作用概述计数计数LineNumberReaderLineNumberInputStream在读取时记录行数在读取时记录行数预览预览PushbackReaderP
15、ushbackInputStream带有带有“回推回推(pushback)”缓缓冲区的输入流冲区的输入流打印打印PrintWriterPrintStream包含便捷的打印方法的流。包含便捷的打印方法的流。各种流的作用概述缓冲缓冲BufferedReaderBufferedWriterBufferedInputStreamBufferedOutputStream缓冲流,用于在读写时进行数据缓冲缓冲流,用于在读写时进行数据缓冲过滤过滤FilterReaderFilterWriterFilterInputStreamFilterOutputStream过滤流的抽象类接口。数据读写时对过滤流的抽象类接
16、口。数据读写时对数据进行过滤数据进行过滤在字节和在字节和字符之间字符之间转换转换InputStreamReaderOutputStreamWriter字节流和字符类间的转换桥梁字节流和字符类间的转换桥梁文件流v要对本机文件系统上的文件进行读写,需要要对本机文件系统上的文件进行读写,需要使用文件流。使用文件流。JavaJava的文件流类包括字符流的的文件流类包括字符流的FileReaderFileReader、FileWriterFileWriter和字节流的和字节流的FileInputStreamFileInputStream、FileOutputStreamFileOutputStream。
17、Java中文件的操作v 而要进行文件流操作,首先必须清楚java中关于文件的基本操作,下面我们进行详细介绍。文件与目录的描述类File File类并不用来进行文件的读/写操作,它用来描述文件对象的属性,既可以表示文件,也可以表示目录。使用它提供的方法,我们可以得到所指对象的描述信息,包括名称、存在否、读/写权限、路径等等。需要注意的是,当我们在Windows环境使用路径时,其分隔符不能是单一的“”符号,因为与C/C+相同,符号“”已经被转意了。例如:vc:jbuilder3javabinv路径是非法的,系统不会识别,正确的应该为vc:jbilder3javabin 或者直接使用反斜杠/来作为路
18、径分隔符。如c:/jbilder3/java/bin文件描述v类File提供了一种与机器无关的方式来描述一个文件对象的属性。v文件的生成public File(String path);public File(String path,String name);public File(File dir,String name);文件描述v文件名的处理String getName( );/*得到一个文件的名称(不包括得到一个文件的名称(不包括路径)路径)*/String getPath( );/得到一个文件的路径名得到一个文件的路径名String getAbsolutePath( );/*得到一个
19、文件的绝对得到一个文件的绝对路径名路径名*/String getParent( );/*得到一个文件的上一级目得到一个文件的上一级目录名录名*/String renameTo(File newName);/*将当前文件名将当前文件名更名为给定文件的完整路径更名为给定文件的完整路径*/文件描述v文件属性测试boolean exists( );/*测试当前测试当前File对象所指示的对象所指示的文件是否存在文件是否存在*/boolean canWrite( );/测试当前文件是否可写测试当前文件是否可写boolean canRead( );/测试当前文件是否可读测试当前文件是否可读boolean
20、isFile( );/*测试当前文件是否是文件测试当前文件是否是文件(不是目录)(不是目录)*/boolean isDirectory( );/*测试当前文件是否是目测试当前文件是否是目录录*/文件描述v普通文件信息和工具long lastModified( );/*得到文件最近一次修改的时得到文件最近一次修改的时间间*/long length( );/得到文件的长度,以字节为单位得到文件的长度,以字节为单位boolean delete( );/删除当前文件删除当前文件v目录操作boolean mkdir( );/*根据当前对象生成一个由该对根据当前对象生成一个由该对象指定的路径象指定的路径*
21、/String list( );/列出当前目录下的文件列出当前目录下的文件File类的方法及变量方法及变量名功能描述public File(File dir,String name)由指定的目录、名字创建该对象public File(String path,String name)由指定的路径、名字创建该对象public File(String path)由指定路径创建该对象public staticfinal String pathSeparator返回系统的路径分隔符public boolean canRead()如果文件可读为真public boolean canWrite()如果文件可
22、写为真public boolean delete()删除文件public boolean equals(Object obj)文件比较,如是同一个文件则为真public boolean exists()指定的文件存在返回真public String getAbsolutePath()得到文件的绝对路径public String getName()得到文件名public String getParent()得到父目录的名字public String getPath()返回路径public int hashCode()返回一个哈希码public nativeboolean isAbsolute()
23、如果是绝对路径返回真public boolean isDirectory()如果是目录则返回真public boolean isFile()如果是文件则返回真public long lastModified()返回最近一次修改时间public long length()返回文件长度public String list(FilenameFilter filter)返回指定格式的目录中的文件名public String list()返回当前目录中的所有文件名public boolean mkdir()创建目录,成功返回真public boolean mkdirs()创建路径中所有目录,成功则返回真
24、public static final char pathSeparatorChar返回路径分隔符public boolean renameTo(Filedest)文件更名,成功返回真public static final char separatorChar返回文件分隔符public String toString()返回对象的字符串表示 下面我们给出几个File类的应用实例。通过例题的使用,希望对File类有更清楚的认识。 例v import java.io.*;v public class MyClass1 v public static void main(String args)v
25、Filef=new File(c:jbuilder3myprojectsuntitled5MyClass1.java);v if(!f.exists()v System.out.println(File MyClass1.java doesnt exist!);v else v System.out.println(This file can read +f.canRead();v System.out.println(last modified +f.lastModified();v System.out.println(Parent is +f.getParent();v System.o
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java第6章 io流 java io
限制150内