java数据流编程思想

上传人:第*** 文档编号:48859117 上传时间:2018-07-21 格式:PPT 页数:74 大小:210.50KB
返回 下载 相关 举报
java数据流编程思想_第1页
第1页 / 共74页
java数据流编程思想_第2页
第2页 / 共74页
java数据流编程思想_第3页
第3页 / 共74页
java数据流编程思想_第4页
第4页 / 共74页
java数据流编程思想_第5页
第5页 / 共74页
点击查看更多>>
资源描述

《java数据流编程思想》由会员分享,可在线阅读,更多相关《java数据流编程思想(74页珍藏版)》请在金锄头文库上搜索。

1、第五讲 输入/输出处理n I/O流概述n 字节流n 字节流的基类n 文件流n 过滤流n 标准流n 字符流n文件操作/随机访问文件n 对象流n 管道流n 内存读写流n 顺序输入流1、I/O流概述大部分程序都需要输入/输出处理,比如从键盘读取数 据、向屏幕中输出数据、从文件中读或者向文件中写数 据、在一个网络连接上进行读写操作等。在Java中,把 这些不同类型的输入、输出源抽象为流(Stream),而 其中输入或输出的数据则称为数据流(Data Stream), 用统一的接口来表示,从而使程序设计简单明了。文件程序终端文件程序网络端点数据流起 点终 点 网络端点文件,字符串 存储区1、I/O流概述

2、流一般分为输入流(Input Stream)和输出流(Output Stream)两类,但这种划分并不是绝对的。比如一个文件 ,当向其中写数据时,它就是一个输出流;当从其中读取 数据时,它就是一个输入流。当然,键盘只是一个输入流 ,而屏幕则只是一个输出流。在Java开发环境中,主要是由包java.io中提供的一系列 的类和接口来实现输入/输出处理。标准输入/输出处理则 是由包java.lang中提供的类来处理的,但这些类又都是从 包java.io中的类继承而来。输入流:数据提供者,可从中读取数据出来 输出流:数据接收者,可往其中写数据1、I/O流概述在JDK1.1之前,java.io包中的流只

3、有普通的字节流(以 byte为基本处理单位的流),这种流对于以16位的 Unicode码表示的字符流处理很不方便。从JDK1.1开始, java.io包中加入了专门用于字符流处 理的类(以Reader和Writer为基础派生的一系列类)。另外,为了使对象的状态能够方便地永久保存下来, JDK1.1以后的java.io包中提供了以字节流为基础的用于对 象的永久化保存状态的机制对象流(通过实现 ObjectInput和ObjectOutput接口)。nInputStream nByteArrayInputStream nFileInputStream nFilterInputStream nBuf

4、feredInputStream nDataInputStreamnLineNumberInputStream nPushbackInputStreamnObjectInputStreamnPipedInputStream nSequenceInputStream nStringBufferInputStreamnOutputStreamnByteArrayOutputStreamnFileOutputStreamnFilterOutputStreamnBufferedOutputStreamnDataOutputStreamnPrintStreamnObjectOutputStreamnPi

5、pedOutputStream1、I/O流概述 字节流nReadernBufferedReadernLineNumberReadernCharArrayReadernFilterReadernPushbackReadernInputStreamReadernFileReadernPipedReadernStringReadernWriternBufferedWriternCharArrayWriternFilterWriternOutputStreamWriternFileWriternPipedWriternStringWriternPrintWriter1、I/O流概述 字符流nDataI

6、nputnObjectInputnDataOutputnObjectOutputnFileFilternFilenameFilternObjectInputValidationnObjectStreamConstantsnSerializablenExternalizablenFilenFileDescriptornRandomAccessFile njava.awt.FileDialog1、I/O流概述 I/O接口 与 文件操作java.io类详解2、字节流 基类:InputStreamJava中每一种字节流的基本功能依赖于基本类InputStream 和OutputStream,它们是抽象

7、类,不能直接使用。属于InputStream类的方法有:n read():从流中读入数据n skip():跳过流中若干字节数n available():返回流中可用字节数n mark():在流中标记一个位置n reset():返回标记过的位置n markSupport():是否支持标记和复位操作n close():关闭流在InputStream类中,方法read()提供了三种从流中 读数据的方法:n int read():从输入流中读一个字节,形成一个0 255之间的整数返回(是一个抽象方法)。n int read(byte b):读多个字节到数组中,填满 整个数组。n int read(by

8、te b, int off, int len):从输入流中读 取长度为len的数据,写入数组b中从索引off开始 的位置,并返回读取得字节数。对于这三个方法,若返回1,表明流结束,否 则,返回实际读取的字节数。2、字节流 基类:InputStream属于OutputStream类的方法有:n write(int b):将一个整数输出到流中(只输出低位字 节,为抽象方法)n write(byte b):将字节数组中的数据输出到流中n write(byte b, int off, int len):将数组b中从off指定的 位置开始,长度为len的数据输出到流中n flush():刷空输出流,并将

9、缓冲区中的数据强制送出n close():关闭流Writer的方法:write(String s), write(String s, int off, int len)2、字节流 基类:OutputStreamn把输入流中的所有内容复制到输出流中public void copy(InputStream in, OutputStream out) throws IOException byte buf = new byte4096;int len = in.read(buf);while (len != -1) out.write(buf, 0, len);len = in.read(buf);

10、 2、字节流 基类:例子2、字节流 各种字节流 q文件流q过滤流:缓冲流、数据流、其他过虑流q标准流q对象流q管道流q内存流q 顺序输入流2、字节流 文件流在I/O处理中,最常见的就是对文件的操作。java.io包中所 提供的文件操作类包括: FileInputStream: FileOutputStream:File: FileDescriptor: FilenameFilter:接口,主要用于实现文件名查找模式的匹配。RandomAccessFile:提供对本地文件系统中文件的随机 访问支持。描述本地文件系统中的文件或目录用于读写本地文件系统中的文件2、字节流 文件流:FileInputS

11、tream/ FileOutputStreamq FileInputStream类用来打开一个输入文件,若要打开的 文件不存在,则会产生例外FileNotFoundException,这 是一个非运行时例外,必须捕获或声明抛弃;q FileOutputStream类用来打开一个输出文件,若要打开 的文件不存在,则会创建一个新的文件,否则原文件的 内容会被新写入的内容所覆盖。q 在进行文件的读/写操作时,会产生非运行时例外 IOException,必须捕获或声明抛弃(其它的输入/输出流 处理时也同样需要进行输入/输出例外处理)。2、字节流 文件流:FileInputStream/ FileOut

12、putStream n文件流的构造方法:nFileInputStream(File f) n打开一个以f描述的文件作为输入。nFileInputStream(String name) n打开一个文件路径名为name的文件作为输入。nFileOutputStream(File f) n创建一个以f描述的文件作为输出,文件如果已经存在,则其内容 被清空。nFileOutputStream(String name) n创建一个文件路径名为name的文件作为输出,文件如果已经存在 ,则其内容被清空。nFileOutputStream(String name, boolean append) n创建一个

13、文件路径名为name的文件作为输出,文件如果已经存在 ,则在该输出上输出的内容被接到原有内容之后。File f1 = new File(“file1.txt”);File f2 = new File(“file2.txt”);FileInputStream in=new FileInputStream(f1);FileOutputStream out=new FileOutputStream(f2);FileOutputStream out=new FileOutputStream(“file3.txt”);输入流的参数是用于指定输入的文件名,输出流的参数则 是用于指定输出的文件名。输出文件输

14、入文件readwrite2、字节流 文件流:FileInputStream/ FileOutputStream2、字节流 文件流:例子1import java.io.*;class Filestreampublic static void main(String args)tryFile inFile=new File(“file1.txt“);File outFile=new File(“file2.txt“);FileInputStream fis=new FileInputStream(inFile);FileOutputStream fos=new FileOutputStream(o

15、utFile);int c;while(c=fis.read()!=-1) fos.write(c);fis.close();fos.close();catch(FileNotFoundException e) System.out.println(“FileStreamsTest: “+e);catch(IOException e) System.err.println(“FileStreamsTest: “+e); 将一个文件复制到另一个文件中(覆盖)2、字节流 过滤流java.io包中提供类FilterInputStream和FilterOutputStream分别 对其他输入/输出流进

16、行特殊处理,它们在读/写数据的同时可以对 数据进行特殊处理。另外还提供了同步机制,使得某一时刻只有 一个线程可以访问一个输入/输出流。类FilterInputStream和FilterOutputStream分别重写了父类 InputStream和OutputStream的所有方法,同时,它们的子类也应 该重写它们的方法以满足特定的需要。要使用过滤流,首先必须把它连接到某个输入/输出流上,通 常在构造方法的参数中指定所要连接的流:protected FilterInputStream(InputStream in);protected FilterOutputStream(OutputStream out);2、字节流 过滤流过滤流其他流2、字节流 过滤流:缓冲流类BufferedInputStream和BufferedOutputStream实现了带缓冲的过滤流,它提供了缓冲机制,把任意的I/O流“捆绑”到缓冲流上,可以提高该I/O流的读取

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

最新文档


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

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