轻松学Java之Java的输入输出流.pptx
第15章Java的输入输出流对于任何编程语言,处理数据的输入、输出操作都占有极其重要的地位。Java语言以流的形式进行数据的输入、输出处理。这一章我们将为大家详细讲述输入输出流的概念、文件的概念以及字节的输入输出流和字符的输入输出流。
15.1输入输出流概述数据流是形象的概念,可以理解为是一种“数据的管道”。管道中流动的东西可以是基于字节,也可以是基于字符的。就好像管道里面可以流动水,也可以流动石油一样,当程序需要读取数据的时候,就会开启一个通向数据源的管道,程序就可以从中提取数据。关于数据流,其输入输出的过程可以用图15.1来表示。
15.1输入输出流概述程序从数据源(包括各种输入设备,如键盘、磁盘、文件等)中读取数据称之为输入;程序将数据写入目标设备(包括各种输出设备,如显示器、磁盘、文件等)称之为输出。我们也可以用示意图15.2来表示。
15.1输入输出流概述数据的输入/输出属于IO部分,Java把处理输入/输出相关的类放在java.io包中。而且java.io不属于java.lang,所以必须使用import将其导入进来。我们可以把常用的java.io包架构图用图15.3来表示。
Java中的数据流分为2种,一种是字节流,另一种是字符流。这两种流主要由4个抽象类来表示:InputStream、OutputStream、Reader、Writer,输入输出各两种。其中InputStream和OutputStream表示字节流,Reader和Writer表示字符流,其他流均是继承这4个抽象类而来的。01下面我们就来具体的学习这些流的用法。0215.1输入输出流概述
15.2文件输入、输出操作经常处理的设备之一是文件。Java语言提供了File类和RandomAccessFile类来对文件进行处理。File类用于管理文件系统中的文件或目录,RandomAccessFile类提供了随机读写文件的功能。下面对这些内容进行详细介绍。
15.2.1File类File类是一个可以对文件本身的属性进行操作的类。例如,可以使用File类中的方法获取文件或者目录的信息,还可以对文件进行创建、修改和删除等操作。File类除了对文件进行操作外,Java允许使用File类将目录当作文件进行处理。File类构造方法如图15.4所示。
15.2.1File类而File类定义的一些主要方法我们可以用表15.1来表示。下面我们再来讲一些对文件的具体操作,以更好的加深对File类的理解。方法方法描述booleancanRead()判断文件是否可读,可读则返回真,否则返回假booleancanWrite()判断文件是否可写,可写则返回真,否则返回假booleanexists()判断文件是否是指定路径中的文件或目录,是则返回真,否则返回假booleanisFile()判断File的对象是否是文件,是则返回真,否则返回假booleanisDirectory()判断File的对象是否是目录,是则返回真,否则返回假booleanisAbsolutePath()判断File的对象是否是一个文件或目录的绝对路径,是则返回真,否则返回假StringgetAbsolutePath()返回一个包含文件或目录的绝对路径的字符串StringgetName()返回一个包含文件或目录名的字符串StringgetPath()返回一个包含文件或目录路径的字符串longlength()返回文件字节长度,若为目录则返回0
0102File类中定义了一些方法,允许对文件和目录进行创建、修改与删除操作。其有关对文件和目录进行创建、修改与删除操作的方法,我们总结在了表15.2中。创建文件使用File.createNewFile()方法。如果该文件创建成功,返回true。如果该文件已经存在,则创建失败,返回false。如果有错误发生,比如路径找不到等,则会抛出IOException异常。15.2.2文件的创建、修改与删除
15.2.3获取文件属性File类中获取文件本身信息包括获取文件的名字、文件的长度、文件的路径、判断文件是否可读或者可写、是否存在等。获取文件本身信息的方法以及方法描述如表15.3所示。File类只能对文件进行一些简单操作,比如取属性,创建、删除和更名等,并不能支持文件内容的读写。要想对文件进行读写操作,就必须通过输入输出流来完成。方法方法描述publicStringgetAbsolutePath()获取文件的绝对路径并以字符串形式返回publicStringgetName()获取文件的名字并以字符串形式返回publicStringgetParent()获取文件父目录名字。如果没有指明父目录返回nullpubl