java高级编程-输入输出

上传人:bin****86 文档编号:54833288 上传时间:2018-09-20 格式:PPT 页数:115 大小:335KB
返回 下载 相关 举报
java高级编程-输入输出_第1页
第1页 / 共115页
java高级编程-输入输出_第2页
第2页 / 共115页
java高级编程-输入输出_第3页
第3页 / 共115页
java高级编程-输入输出_第4页
第4页 / 共115页
java高级编程-输入输出_第5页
第5页 / 共115页
点击查看更多>>
资源描述

《java高级编程-输入输出》由会员分享,可在线阅读,更多相关《java高级编程-输入输出(115页珍藏版)》请在金锄头文库上搜索。

1、第十章 输入输出,8.3.1 Java语言I/O概述 8.3.2 Java语言I/O的类层次 8.3.3 Java中文件的操作 8.3.4 特殊的I/O处理流 8.3.5 I/OStream的典型运用,8.3.1 Java语言I/O概述,大部分程序都需要输入/输出处理,比如从键盘读取数据、向屏幕中输出数据、从文件中读或者向文件中写数据、在一个网络连接上进行读写操作等。在Java中,把这些不同类型的输入、输出源抽象为流(Stream),而其中输入或输出的数据则称为数据流(Data Stream),用统一的接口来表示,从而使程序设计简单明了。,1.按输入/输出分类 流一般分为输入流(Input S

2、tream)和输出流(Output Stream)两类。将从中可以读出一个字节序列的对象称为输入流;而将可以写入某一个字节序列的对象称为输出流。但这种划分并不是绝对的。比如一个文件,当向其中写数据时,它就是一个输出流;当从其中读取数据时,它就是一个输入流。当然,键盘只是一个输入流,而屏幕则只是一个输出流。,java流的分类,2. 按流的结构分类:Java的流方法从结构上可以分为三大类:字节流、数据流和打印流。(1)字节流输入/输出流操作对象为字节(byte);输入的字节流InputStream输出的字节流OutputStream,InputStream的方法,三个基本的read方法: int

3、read () 从输入流中读一个字节,形成一个0255之间的整数返回(是一个抽象方法)。 int read (byte b) 读取多个字节,放置到字节数组b中,通常读取的字节数量为b的长度,返回值为实际读取的字节的数量。 int read (byte b, int off, int len) 从输入流中读取长度为len的数据,写入数组b中从索引off开始的位置,并返回读取的字节数。 对于这三个方法,若返回1,表明流结束。 其它方法 void close() int available() /返回值为流中尚未读取的字节的数量 skip(long n) /读指针跳过n个字节不读,返回值为实际跳过的

4、字节数量,OutputStream的方法,三个基本的write方法 write(int b) 将一个整数输出到流中(只输出低位字节) write(byte b) 将字节数组中的数据输出到流中 write(byte b, int off, int len) 将数组b中从off指定的位置开始,长度为len的数据输出到流中 其它方法 flush() 刷空输出流,并将缓冲区中的数据强制送出 close() 关闭流,字符流是机器能够识别的字符形式(包括ASCII码和Unicode码)。 输入的字符流:Reader 输出的字符流:Writer,(2)字符流,Reader的方法,三个基本的read方法 in

5、t read () 从输入流中读一个字符,形成一个0255之间的整数返回(是一个抽象方法)。 int read (char b) 读取一系列字符到数组b中,返回值为实际读取的字符的数量 。 int read (char b, int off, int len) 从输入流中读取长度为len的数据,写入数组b中从索引off开始的位置,并返回读取得字符数。 对于这三个方法,若返回1,表明流结束。 其它方法 void close() boolean ready() skip(long n),Writer的方法,基本的write方法 void write(int c) 将一个字符输出到流中(只输出低位字

6、节) void write(char cbuf) 将字符数组中的数据输出到流中 void write(char cbuf, int offset, int length) 将数组中从off指定的位置开始,长度为len的数据输出到流中 void write(String string) 将一个字符串输出到流中 void write(String string, int offset, int length) 将字符串string中从off指定的位置开始,长度为len的数据输出到流中 其它方法 void close() void flush(),(3)二进制数据流,输入的二进制数据流DataInp

7、utStream,输出的二进制数据流DataOutputStream。如果要读取与机器无关的基本数据类型的数据,如整型或浮点型的二进制数,就要用到二进制数据文件流。实际使用中,类DataInputStream和DataOutputStream必须和一个输入类(InputStream)或输出类(OutputStream)联接起来,不能直接用文件名或文件对象(File)对其直接初始化.,DataInputStream和DataOutputStream 数据输入输出流在提供了字节流的读写手段的同时,还可以处理boolean,int,long,double等基本数据类型。 可以用readLine方法读

8、取一行信息 分别实现了DataInput和DataOutput接口它们可以从所连接的输入流中读取与机器无关的基本数据类型,也可以向所连接的输出流写入基本类型数据。 数据流的建立 FileOutputStream fos= new FileOutputStream(”file2.txt“); DataOutputStream dos= new DataOutputStream(fos) 下面的例子显示如何利用数据输入输出流往文件中写不同类型的数据.,class datainput_output public static void main(String args) throws IOExcep

9、tion FileOutputStream fos=new FileOutputStream(“a.txt”);DataOutputStream dos=new DataOutputStream (fos);try dos.writeBoolean(true);dos.writeByte(byte)123);dos.writeChar(J);dos.writeDouble(3.141592654);dos.writeFloat(2.7182f);dos.writeInt(1234567890);dos.writeLong(998877665544332211L);dos.writeShort(

10、short)11223);finally dos.close(); ,DataInputStream dis=new DataInputStream(new FileInputStream(”a.txt“); try System.out.println(“t “+dis.readBoolean();System.out.println(“t “+dis.readByte();System.out.println(“t “+dis.readChar();System.out.println(“t “+dis.readDouble();System.out.println(“t “+dis.re

11、adFloat();System.out.println(“t “+dis.readInt();System.out.println(“t “+dis.readLong();System.out.println(“t “+dis.readShort();finallydis.close(); ,3. 按流的介质分类:标准输入/输出流、文件流、网络流、内存流。标准输入流:System.in(字节流)标准输出流:System.out(字节流)文件输入流:FileInputStream(字节流)FileReader(字符流)文件输出流:FileOutputStream(字节流)FileWriter(

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

13、行输入/输出例外处理)。,read,write,File Streams,文件流的构造方法: FileInputStream(String name) 打开一个文件路径名为name的文件作为输入。 FileOutputStream(String name) 创建一个文件路径名为name的文件作为输出,文件如果已经存在,则其内容被清空。 FileOutputStream(String name, boolean append) 创建一个文件路径名为name的文件作为输出,文件如果已经存在,则在该输出上输出的内容被接到原有内容之后。例:文件拷贝 (注意要捕获文件异常) 输入流的参数是用于输入的文件

14、名 输出流的参数是用于输出的文件名,例使用字节流实现copy功能import java.io.*;public class FileCopy public static void main(String args) throws IOExceptionFileInputStream f1;FileOutputStream f2;f1=new FileInputStream(“FileCopy.java“);f2=new FileOutputStream(“acopy_of_java_file“);,int temp;while(temp=f1.read()!=-1)f2.write(temp)

15、;f1.close(); f1.close(); public FileCopy() 在该例中,我们利用字节流将本程序拷贝至另一个文件acopy_of_java_file中,如果指定的文件不存在,则创建一个新文件,否则原文件的内容会被新写入的内容覆盖。当程序运行后,将生成一个与原程序相同的副本。,例 使用字符流实现copy功能import java.io.*;public class FileCopy public static void main(String args) throws IOExceptionFileReader f1;FileWriter f2;f1=new FileRea

16、der(“FileCopy.java“);f2=new FileWriter(“acopy_of_java_file“);,int temp;while(temp=f1.read()!=-1)f2.write(temp);f1.close(); f2.close(); public FileCopy() ,类BufferedInputStream和BufferedOutputStream实现了带缓冲的过滤流,它提供了缓冲机制,把任意的I/O流“捆绑”到缓冲流上,可以提高读写效率。 在初始化时,除了要指定所连接的I/O流之外,还可以指定缓冲区的大小。缺省大小的缓冲区适合于通常的情形;最优的缓冲区大小常依赖于主机操作系统、可使用的内存空间以及机器的配置等;一般缓冲区的大小为内存页或磁盘块等的整数倍,如8912字节或更小。 BufferedInputStream(InputStream in, int size) BufferedOutputStream(OutputStream out, int size),

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

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

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