输入输出和文件操作

上传人:自*** 文档编号:52517280 上传时间:2018-08-22 格式:PPT 页数:48 大小:458.10KB
返回 下载 相关 举报
输入输出和文件操作_第1页
第1页 / 共48页
输入输出和文件操作_第2页
第2页 / 共48页
输入输出和文件操作_第3页
第3页 / 共48页
输入输出和文件操作_第4页
第4页 / 共48页
输入输出和文件操作_第5页
第5页 / 共48页
点击查看更多>>
资源描述

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

1、IO System (输入/输出流)和文件操作,流的定义和作用 流的定义、方向性和读/写操作:通向数据源的通路 数据源: 文件, 内存 或者网络连接 流的作用 流采用缓冲区技术 流的存在,流的概念,字节流和字符流,流按照处理数据的单位可以分为两种:字节流和字符流.,文件,文本文件二进制文件,二进制文件的基本存储单位是字节 文本文件的基本存储单位是字符,字符编码,计算机里只有数字,计算机软件里的一切都是用数字来表示的,屏幕上显示的一个个字符也不例外 字符a对应数字97,字符b对应数字98等,这种字符与数字对应的编码规则称为ASCII(美国标准信息交换码)。ASCII的最高bit位都为0,也就是说

2、这个数字都在0和127之间 中国大陆将每一个中文字符都用两个字节的数字表示,中文字符的每个字节的最高bit都为1,中国大陆为每个中文字符制定的编码规则称为GB2312(国标码) 在GB2312的基础上,对更多的中文字符(包括繁体)进行了编码,新的编码规则称为GBK,字符编码,在中国大陆使用的计算机系统上,GBK和GB2312就被称为该系统的本地字符集 “中国”的“中”字,在中国大陆的编码是十六进制的D6D0,而在中国台湾的编码是十六进制的A4A4,台湾地区对中文字符集的编码规则称为BIG5(大五码) 在一个国家的本地化系统中出现的一个字符,通过电子邮件传送到另外一个国家的本地化系统中,看到的就

3、不是那个原来字符了,而是另外那个国家的字符或者是乱码。,Unicode编码,ISO(国际标准化组织)将全世界所有的符号进行了统一编码,称为Unicode编码 “中”这个符号,在全世界的任何角落始终对应的都是一个十六进制的数字4e2d 如果所有的计算机系统都是使用Unicode编码,在中国大陆的本地化系统中显示的“中”这个符号,发送到任何别的的本地化系统中,显示的仍然是“中”这个符号 Unicode编码的字符都占用两个字节的大小,对于ASCII码所表示的字符,只是简单的在ASCII码原来占用的一二字节前面,增加了一个所有bit都为0的字节 Unicode只占用两个字节,在全世界范围内所表示的字符

4、个数不会超过2的16次方(65536),实际上,Unicode编码中还保留了两千多个数值没有用与字符编码 在相当长的一段时间内,本地化字符编码将与Unicode编码共存。 Java中的字符使用的都是Unicode编码,Java在通过Unicode保证跨平台特性的前提下,也支持本地平台字符集,Java的输入/输出流与文件操作概述,流类 输入流 字节输入流:InputStream 字符输入流:Reader 输出流 字节输出流: OutputStream 字符输出流:Writer,文件操作类 文件类:File 随机存取文件类: RandomAccessFile类,几乎所有的输入输出的类的方法,都有可

5、能抛出异常(I/O Exception),InputStream类的层次图,InputStream,InputStream 是基本的输入流类,是一个抽象类 它的任务就是代表那些能从各种输入源获取数据的类。 输入源(子类扩展)可为: byte数组 String对象 文件 类似流水线的“管道(pipe)“。把东西从一头放进去,让它从另一头出来。 一个“流的序列(A sequence of other streams)“,可以将它们组装成一个单独的流。 其它源,比如Internet的连接。,InputStream类,它的常用方法有: int read():读取一个字节,返回值为所读的字节 int r

6、ead(byte b):读入b.length个字节到数组b并返回实际读入的字节数 int read(byte b,int off,int len):读入流中的数据到数组b,不过在从off开始的长度为len的数组元素中 long skip(long n):跳过输入流上的n 个字节并返回实际跳过的字节数 int available():返回当前输入流中可读的字节数 close( ):流操作完毕后必须关闭,InputStream类,使用输入流中的标记: void mark( int readlimit ); 记录当前读指针所在位置,readlimit表示读指针读出readlimit个字节后所标记的指

7、针位置才失效void reset( ); 把读指针重新指向用mark方法所记录的位置boolean markSupported( ); 当前的流是否支持读指针的记录功能,OutputStream类的层次图,OutputStream,OutputStream是最基本的输出流类 与InputStream对应,它定义了输出流类共同的特性 但它的所有方法都是void返回类型。 常用方法有: void write( int b ); /往流中写一个字节b void write( byte b ); /往流中写一个字节数组b void write( byte b , int off, int len );

8、 把字节数组b中从下标off开始,长度为len的字节写入流中flush( ); 刷空输出流,并输出所有被缓存的字节由于某些流支持缓存功能,该方法将把缓存中所有内容强制输出到流中。close( ); 流操作完毕后必须关闭,Java的标准输入/输出,标准输入/输出常量 public final class System extends Object public final static InputStream in /标准输入常量public final static PrintStream out /标准输出常量public final static PrintStream err /标准错误

9、输出常量 ,PrintStream类,public class PrintStream extends FilterOutputStream public void print(boolean b) public void print(char c) public void print(long l)public void print(int i) public void print(float f) public void print(double d) public void print(String s) public void print(Object obj) public void

10、 println() ,标准输入/输出,Case:KeyboardInput.java,标准输入过程,标准输出过程,介质流的概念和使用,流在某一个介质上发生,通常表示数据源(目的地),FileInputStream类,构造函数 FileInputStream(File file) 创建一个文件输入流对象,从file对象指定的文件中读取字节流 File f = new File(“test.txt”); FileInputStream inTow = new FileInputStream(f); FileInputStream(String name) 创建一个文件输入流对象,并从指定name

11、文件名的文件中读取数据 FileInputStream inOne = new FileInputStream(“test.txt”);,FileOutputStream类,构造函数 FileOutputStream(File file) FileOutputStream(File file, boolean append) 创建一个文件输出流对象,并将内容写到指定的file对象中,如果append为真,则接着文件最后写,否则从头写 FileOutputStream(String name) FileOutputStream(String name,boolean append) 创建一个文件

12、输出流对象,并将内容写到指定的name文件名,如果append为真,则接着文件最后写,否则从头写 如果该文件不存在,则创建一个同名的新文件,此时的name只能是文件名,而非目录名Case : ByteFile.java,过滤流的作用,过滤流是构造在介质流或其他过滤器流的基础上的流,它们将流过的数据进行加工,从而实现复杂的数据读写的能力。 过滤流只是对流过的数据进行加工,所以使用过滤流必须给它指定一个待处理的流,基本 数据 类型,过滤器流类,BufferedInputStream 和 BufferedOutputStream类,缓冲流为I/O流增加了内存缓冲区,增加缓冲区有两个基本目的 允许ja

13、va程序一次不只操作一个字节,这样提高了程序的性能 由于有了缓冲区,使得在流上执行skip、mark和reset方法成为可能 BufferedInputStream和BufferedOutputStream是java提供的两个缓冲区包装类,不管底层系统是否使用了缓冲区,这两个类在自己的实例对象中创建缓冲区。 BufferedInputStream的两个构造函数 BufferedInputStream (InputStream in) BufferedInputStream (InputStream,int size) BufferedOutputStream的两个构造函数 BufferedOu

14、tputStream (OutputStream out) BufferedOutputStream (OutputStream out,int size),DataInputStream与DataOutputStream类,DataInputStream提供的函数:int read (byte b, int off, int len) Boolean readBoolean ( ) byte readByte ( ) char readChar ( ) double readDouble ( ) float readFloat ( ) Int readInt ( ),DataOutputSt

15、ream提供的函数: Void write(byte b, int off, int len) Void writeBoolean(boolean v) Void writeByte(int v) Void writeDouble(double v) Void writeFloat(float v) Void writeInt(int v) Void writeLong(long v),这两个流类提供了对数据类型的输入输出,Case : PersonIo.java,对象输入/输出流类,ObjectInputStream类 public class ObjectInputStream exten

16、ds InputStream implements ObjectInput, ObjectStreamConstants public ObjectInputStream(InputStream in) throws IOException /构造方法public final Object readObject() throws IOException, ClassNotFoundException /读取一个对象 ,ObjectOutputStream类,public class ObjectOutputStream extends OutputStream implements ObjectOutput, ObjectStreamConstants public ObjectOutputStream(OutputStream out) throws IOException /构造方法public final void writeObject(Object obj) throws IOException /写入一个对象 Case: StudentFile.java,

展开阅读全文
相关资源
相关搜索

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

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