java基础系列-io

上传人:第*** 文档编号:48859112 上传时间:2018-07-21 格式:PPT 页数:76 大小:796.50KB
返回 下载 相关 举报
java基础系列-io_第1页
第1页 / 共76页
java基础系列-io_第2页
第2页 / 共76页
java基础系列-io_第3页
第3页 / 共76页
java基础系列-io_第4页
第4页 / 共76页
java基础系列-io_第5页
第5页 / 共76页
点击查看更多>>
资源描述

《java基础系列-io》由会员分享,可在线阅读,更多相关《java基础系列-io(76页珍藏版)》请在金锄头文库上搜索。

1、Java 基础系列IO一、文件和目录File类概述 File类构造器 File类的常用方法1、File类概述File类的对象是文件系统中的一个目录或文件的抽象表示。File类对象描述文件路径、名字、长度、可否读写等属性,可用来命名 文件、查询文件属性、对目录进行操作,但不读写文件。读写文件内 容分别是由FileInputStream和FileOutputStream类实现的。通过File类对象可以对操作系统的文件进行管理,体现了跨平台不同文 件的统一管理2、File类构造器File有三个重载的构造方法:1)、File(String path)2)、File(String path,String

2、 name)3)、File (File dir,String name)2、File类构造器File(String path)Path可以是文件的完整路径名,也可只有路径而无文件名;路经可以 是绝对路径,也可以是相对路径;路径或文件名可以是已存在的也可 是新的,新的则被创建,旧的则被刷新。例1:File file1=newFile(“f:javaaaa”); 在已存在的f:java目录下新创建一个aaa目录,使用的是绝对路径,且 只能创建一层新目录。例2:File file2=new File(“bbb”);在当前工作目录下,创建bbb新目录的文件对象,使用的是相对路径例3:File file

3、3=new File(“f:javafile1.txt”);使用绝对路径,在已存在的f:java目录下创建一个文本文件对象。2、File类构造器File(String path,String name)Path:已存在的文件路径, Name :可以是路径或文件名,可以是新的或原有的。例4:File file4=new File(“f:java”,”aaa”);与例1效果相同 例5 :File file5=new File(“f:java”,“file1.txt”); 与例3效果相同2、File类构造器File (File dir,String name)dir:为文件对象,由该对象指定路径,称

4、抽象路径 name:文件名或目录名例6: File file1=new File(“f:javaaaa”); File file6=new File(file1,”myfile.txt”);3、File类的常用方法方法(public)说 明 boolean canRead() 测试 文件是否可读 boolean canWrite() 测试 文件是否可写boolean delete() 删除当前文件或目录 boolean exists()测试 文件或目录是否存在 File getAbsoluteFile() 返回文件或目录绝对 地址(对象) String getAbsolutePath()返回文

5、件或目录绝对 地址(字符串 ) String getCanonicalPath()返回规范路径名(与OS有关)方法(public)说 明 String getName()只返回文件或目录的名字 String getPath()返回文件或目录的完整路径 String getParent()只返回文件或目录的上层路径 boolean isAbsolute() 测试该对 象是绝对 路径否 boolean isDirectory() 测试该对 象是目录否 boolean isFile() 测试该对 象是文件否 long length() 返回文件对象的文件长度(以字节为单 位) String list

6、() 返回该对 象目录下的所有文件列表(包括 文件夹) boolean mkdir() 为该对 象形成物理上的文件夹示例二、Java IO库概述 Java I/O库设计原则 输入流、输出流 字节流、字符流 流处理器(原始流处理器、装饰流处理器) IO类的继承结构 流的适配1、Java IO概述通常程序需要从外部获取/输出信息 这个“外部”范围很广,包括诸如键盘、显示器、文件、磁盘、网络 、另外一个程序等 “信息”也可以是任何类型的,例如一个对象、串字符、图像、声音 等 Java把不同类型的输入/输出源抽象为流(stream),用统一接口来 表示,从而使程序简单明了。 所谓流,就是数据的有序排列

7、。而流可以是从某个源(称为流源,Source of Stream)出来,到某个目的地(称为流汇 ,Sink of Stream)。Java中负责I/O的类(称为流类)统一存放在java.io包中。该包又叫做I/O库Disk file ,屏幕源汇Disk file ,键盘InputStreamReaderOutputStreamWriter1、Java IO概述读写数据的方法不论数据从哪来,到哪去,也不论数据本身是何类型,读写数据的方法大 体上都是一样的:读写打开一个流 读信息 关闭流打开一个流 写信息 关闭流1、Java IO概述流的分类输入/输出流可以从以下几个方面进行分类 从流的方向划分

8、输入流 输出流 从流的分工划分 节点流(原始流) 处理流(链接流) 从流的内容划分 面向字符的流 面向字节的流2、Java I/O库的设计原则两个对称性: 输入输出对称: InputStream和OutputStream提供了面向字节的I/O功能; Reader和Writer提供了面向字符的I/O功能。 bytechar对称: InputStream与Reader的子类分别负责byte和char流的输入; OutputStream和Writer的子类分别负责byte和char流的输出 。两个设计模式: 装饰模式: 有些流处理器可以对另一些流处理器起到装饰作用,形成新的具有 改善了功能的流处理器

9、。接口不改变,但增加功能。 适配器模式: 有些流处理器是对其他类型的流源的适配。接口改变,但不增加功 能。两种流 原始流: 原始流处理器接收一个Byte数组对象、String对象或文件对象,并声 称一个InputSteam类型的流对象 例如:ByteArrayInputStream, FileInputStream, PipedInputStream, StringBufferInputStream。链接流(装饰流): 可以接收另一个(同种类)流对象作为流源,并对其进行功能扩 展。同样类型的流用做链接流类的流源。 例如:FilterInputStream下的BufferedInputStrea

10、m, DataInputStream, LineNumberInputStream, PushbackInputStream。 ObjectInputStream和SequenceInputStream2、Java I/O库的设计原则3、字节流与字符流按处理数据的单位划分,Java支持两种基本的流类型: 字节流类:以字节(byte)为流动单位基类 InputStream/OutputSream 字符流类:以16位字符(Unicode)为流动单位基类 Reader/Writer说明: 以字符为导向的stream基本上对有与之相对应的以字节为导向的 stream。两个对应类实现的功能相同,只是在操

11、作时的导向不同。如 CharArrayReader:和ByteArrayInputStream的作用都是把内存中的一 个缓冲区作为InputStream使用,所不同的是前者每次从内存中读取一 个字节的信息,而后者每次从内存中读取一个字符。3、字节流与字符流4、流处理器流的处理过程用来处理流的流类又称为流处理器,一个流处理器就像一个流的管 道一样,从一个流源吸入某种类型的数据,并输出某种类型的数据 。例如,一个java程序可以使用FileInputStream类直接从一个文件中读 取数据,如下图所示:像FileInputStream这样的流类叫做流处理器。FileInputStreamFileI

12、nputStreambyte类型的数据byte类型的数据源磁盘文件4、流处理器流的处理过程类似地,也可以用FileOutputStream类直接向一个文件中写出数据,如下 图所示:在实际应用当中,这种简单的机制并没有太大的用处。因为程序需要写出 的往往是非常结构化的信息,比如数值、文字、源代码等。这样一来,数 据的转换工作将十分复杂FileOutputStreamFileOutputStreambyte类型的数据byte类型的数据汇磁盘文件4、流处理器流的处理过程Java的I/O库提供了一个称作链接(Chaining)的机制,可以将一个流处 理器与另一个流处理器首尾相接,以其中之一的输出为输入

13、,形成一个流 管道的链接例如:DataInputStream流处理器可以把FileInputStream流对象的输出当 作输入,将byte类型的数据转换成java的基本数据类型和String类型的数 据,如下图所示:FileInputStreamFileInputStreambyte类型的数据byte类型的数据源磁盘文件DataInputStreamDataInputStreamint类型的数据float类型的数据String类型的数据4、流处理器流的处理过程类似地,向一个文件写入byte类型的数据不是一个简单的过程:一个程序 需要向一个文件里面写入的数据往往是结构化的,而不是byte类型的,

14、因 此在利用FileOutputStream写的时候必须首先经过转换。 DataOutputStream流处理器提供了直接接收基本数据类型和String类型 的方法,而这个流处理器的输出数据则是byte类型。这样一来,可以将 DataOutputStream和FileOutputStream链接起来,达到直接将结构化的数 据写入到文件中的目的。DataOutputStreamDataOutputStreamint类型的数据float类型的数据String类型的数据byte类型的数据汇磁盘文件byte类型的数据FileOutputStreamFileOutputStream4、流处理器分类流处理

15、器所处理的流必定都有流源。流源分成两大类: 数组、String、File等,叫原始流源 用于链接流类的流源,叫链接流源Java 语言的I/O库是对各种常见的流源、流汇、以及处理过程的抽象化Java 语言的I/O库是由一些基本的原始流处理器和围绕它们的装饰流处理器所组成 的5、IO类的继承结构字节输入流 字节输出流 字符输入流 字符输出流字节输入流基类InputStream类声明: public abstract class InputStream extends Object implements Closeable三个基本的read方法: abstract int read() /这里的re

16、ad方法是为了更复杂的类可以利用它们 ,以便提供一个更有用的接口 int read(byte b) /从输入流中读取字节数据保存到数组b中 int read(byte b, int offset, int length) 其它方法: void close() /关闭输入流并释放与之相关的所有系统资源 int available() /返回输入流中可以读的字节数 long skip(long n) /从输入流中跳过n个字节 boolean markSupported() /测试输入流是否支持mark,reset方法 void mark(int readlimit) /在输入流中标记当前位置 void

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 工程造价

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号