输入输出流和文件操作

上传人:宝路 文档编号:47079367 上传时间:2018-06-29 格式:PPT 页数:79 大小:277.63KB
返回 下载 相关 举报
输入输出流和文件操作_第1页
第1页 / 共79页
输入输出流和文件操作_第2页
第2页 / 共79页
输入输出流和文件操作_第3页
第3页 / 共79页
输入输出流和文件操作_第4页
第4页 / 共79页
输入输出流和文件操作_第5页
第5页 / 共79页
点击查看更多>>
资源描述

《输入输出流和文件操作》由会员分享,可在线阅读,更多相关《输入输出流和文件操作(79页珍藏版)》请在金锄头文库上搜索。

1、第1章 输入/输出流和文件 操作 1.1 文件和流的概念 1.2 字节输入/输出流类 1.3 字符输入/输出流类 1.4 文件操作类1.1 文件和流的概念n1.1.1程序设计语言中的文件类型n1.1.2 流的概念n1.1.3 Java的输入/输出流与文件操作 概述文件类型 nJava中有两种类型的文件:二进制文件 和文本文件。这两种文件都将数据以位流序 列的方式存储数据,即一个0或1的序列,差 别是二进制文件是作为一个字节序列来处理 的,而文本文件是作为一个字符序列来处理 的。n文本文件可以用文本编辑器直接读写,而 二进制文件不便使用文本编辑器直接读写, 但却能够高效地由程序来进行读写。I/O

2、流nI/O是程序设计中的重要问题,大部分的应用程 序都需要I/O操作,比如从键盘获得用户输入、在 屏幕输出运行结果、对磁盘文件进行读写等等。应 用程序只有通过I/O操作才能实现与用户的交互及 数据的处理及存储. n在Java语言中,将不同类型的I/O抽象为流。所 谓“流(stream)”,可以看作是数据在文件或程 序之间的传递 流的概念Java中的所有输入输出,无论它是文件I/O还是涉及键 盘和屏幕的I/O,都是通过流的使用来完成的。流就像 一个管道,连通了信息的源及其目的地。IO流分类n 流分为输入流(InputStream)和输出流 (OutputStream)两类,比如一个文件, 当向其

3、中写数据时,需要建立输出流;当从 其中读取数据时,需要建立输入流。n按照流所处理的数据类型划分,可以分为:n字节流:用于处理字节数据。n字符流:用于处理字符数据。n按照数据源与目的地的关系:节点流、 处理流(过滤流)节点流和处理流节点流为可以从一个特定的数据源(节点)读写数据(如:文件 ,内存)数据源程序处理流是“连接”在已存在的流(节点流或处理流)之上,通过对 数据的处理为程序提供更为强大的读写功能。节点流数据源数据源程序程序Java的输入/输出流与文件操 作概述n流类nInputStream抽象的字节输入 流类nOuputStream抽象的字节输出 流类nReader抽象的字符输入流类nW

4、riter抽象的字符输出流类n文件操作类nFile文件类nRandomAccessFile随机存取文件类Java的输入/输出流与文件操 作概述nInputStream类和OutputStream类是 Java的两个主要流类,这两个类主要用 来处理字节流,它们都是抽象类。对于 标准输入System.in和标准输出 System.out都是它们的子类。 Java的输入/输出流与文件操 作概述nReader类和Writer类与InputStream类 和OutputStream类基本功能相同,只是 Reader类和Writer类以字符(char)为 单位读入。nJava提供RandomAccessF

5、ile类来实现随 机访问存储在文件不同位置的记录,即 随机文件存取。 Java的输入/输出流与文件操 作概述nJava还提供了一个File类用于获取磁盘 中的文件或目录信息,File类的对象并 不打开文件,也不提供任何文件内容的 处理功能。 1.2 字节输入/输出流类n1.2.1 字节输入流类InputStreamn1.2.2 字节输出流OutputStream类n1.2.3 Java的标准输入/输出n1.2.4 文件字节输入/输出流类n1.2.5 过滤流类n1.2.6 对象输入/输出流类字节流(了解)下图中深色为节点流 ,浅色的为处理流1.2.1 字节输入流类 InputStreamn字节输

6、入流(InputStream)是指只能 读不能写的数据流,用于向计算机内输 入信息而用。njava.io包中所有字节输入流都是由抽象 类InputStream继承而来。1.2.1 字节输入流类 InputStreamnInputStream类 public abstract class InputStream extends Object implements Closeable public abstract int read() throws IOException; /返回读取的一个字节, 抽象方法public int read(byte b) throws IOException/从输

7、入流中读取若干字节到指 定缓冲区,返回实际读取的字节数public void close() throws IOException /关闭输入流,空方法 抽象类InputStreamn三个基本的read方法:nint read():读取一个字节,并将它返 回。读取结束时,它会得到-1 。nint read(byte buffer):将数据读 入一个字节数组,同时返回读取的字节数 。nint read(byte buffer, int offset, int length):将数据读入一个字节数组, 放到数组的offset指定的位置开始,并用 length来指定读取的字节数。主要数据操作方法vo

8、id close() n数据流关闭,同时释放与该数据流相关 的资源 int available()n返回目前可以从数据流中读取的字节 long skip(long l) 跳过数据流中指定数量的字节不读,返回值表示实 际跳过的字节数 1.2.2 字节输出流 n字节输出流(Output Stream)是指只 能写不能读的流,用于从计算机中输出 数据 njava.io包中所有字节输出流大多是从抽 象类OutputStream继承而来 1.2.2 字节输出流 OutputStream类nOuputStream类 public abstract class OutputStream extends Ob

9、ject implements Closeable, Flushable public abstract void write(int b) throws IOException; /写入一个字节,抽象方法public void write(byte b) throws IOException /将数组中的若干字节写入输出流public void flush() throws IOException /立即传输public void close() throws IOException /关闭输出流,空方法 抽象类OutputStreamnvoid write(int b):将一个整数输出到流

10、中 (只输出低位字节)n void write(byte b):将字节数组中的数 据输出到流中n void write(byte b, int off, int len):将 数组b中从off指定的位置开始,长度为len的数据 输出到流中nvoid flush():刷空输出流,并将缓冲区中的 数据强制送出nvoid close():关闭流主要数据操作方法void flush()n输出数据流会在提交数据之前把所要输 出的数据先锁定在内存缓冲区中,然后成 批地进行输出,每次传输过程都以某特定 数据长度为单位进行传输。这种方式下, 在数据的末尾一般都会有一部分数据由于 数量不够一个批次,而存留在缓冲

11、区里, flush()可以将留在缓冲区里的数据强制提 交 缓冲存储缓冲区单位的容量末尾剩余部分1.2.3 Java的标准输入/输 出n标准输入/输出常量 public final class System extends Object public final static InputStream in /标准输 入常量public final static PrintStream out /标准输 出常量public final static PrintStream err /标准错误输出常量 标准输入输出nSystem.in,从InputStream中继承而来, 用于从标准输入设备中获取输

12、入数据(通常是 键盘)。nSystem.out,从PrintStream中继承而来 ,把输出送到缺省的显示设备(通常是显示器 )。nSystem.err,也是从PrintStream中继承而 来,把错误信息送到缺省的显示设备(通常是 显示器)。n对于java程序,每当main方法被执行时, 就自动生成上述三个对象。PrintStream类nPrintStream类nprint(), println()可以以字符串的形式 输出多种数据类型.例如:nprintln(String s), println(char c) println(int i) println(boolean b)等【例1.1】

13、 标准输入/输出 。图 标准输入过程 图 标准输出过程 import java.io.*; public class KeyboardInput public static void main(String args) throws IOException System.out.print(“Input: “);byte buffer = new byte512; int count = System.in.read(buffer); System.out.print(“Output: “);for (int i=0;i public File(String pathname) public

14、File(String parent, String child)public File(File parent, String child) 例如, File file = new File(“myfile.txt“); File dir = new File(“C:”,”myfile.txt”); File dir = new File(“.“); /创建一个目录文件对象,表示当前目录 文件描述文件名的处理 String getName( );/*得到一个文件的 名称(不包括路径)*/ String getPath( );/得到一个文件的路 径名 String getAbsolutePat

15、h( );/*得到一个 文件的绝对路径名*/文件描述文件属性测试 boolean exists( );/*测试当前File对象所指 示的文件是否存在*/ boolean canWrite( );/测试当前文件是否 可写 boolean canRead( );/测试当前文件是否可 读 boolean isFile( );/*测试当前文件是否是文 件 (不是目录) */ boolean isDirectory( );/*测试当前文件是否是目录*/long length( );/得到文件的长度,以字节为单位File类主要方法nmkdir() /创建目录ncreateNewFile() /创建文件nd

16、elete() /删除文件或目录,删除目录时,应该保证 所删目录是一个空目录,否则删除操作失败。nlist()方法产生目录清单,它只返回指定目录中包含的文 件名或子目录名,没有文件长度、修改时间、文件属性等 信息。nlastModified()返回文件最后一次被修改的时间。1.4.2 随机存取文件类 RandomAccessFilen使用流的形式对文件进行读写必须顺序 进行,也就是说这些文件流的数据必须 按先后次序进行处理。n随机文件存取提供了一种更灵活的文件 读写方式,它允许对文件的内容进行非 顺序的访问,可以移动文件指针使其指 向文件中的任何位置,然后进行读写操 作 1.4.4 随机存取文件类 RandomAccessFilepublic class RandomAccessFile extends Object impleme

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

最新文档


当前位置:首页 > 高等教育 > 大学课件

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