java语言的输入输出流

上传人:shaoy****1971 文档编号:111939005 上传时间:2019-11-04 格式:PPT 页数:72 大小:431.55KB
返回 下载 相关 举报
java语言的输入输出流_第1页
第1页 / 共72页
java语言的输入输出流_第2页
第2页 / 共72页
java语言的输入输出流_第3页
第3页 / 共72页
java语言的输入输出流_第4页
第4页 / 共72页
java语言的输入输出流_第5页
第5页 / 共72页
点击查看更多>>
资源描述

《java语言的输入输出流》由会员分享,可在线阅读,更多相关《java语言的输入输出流(72页珍藏版)》请在金锄头文库上搜索。

1、第10章 Java语言的输入输 出与文件处理 本章主要内容 n流的概念 n处理字节流的基本类:InputStream和OutputStream n处理字符流的基本类:Reader和Writer n标准输入输出 n文件管理类:File 10.1 Java语言的输入输出类库 n流(stream)是指计算机各部件之间的数据 流动。流是由位或字符组合而成的序列。 n分类: q传输方向:输入流与输出流 q内容上:字符流和字节流 n流用来顺序地读写数据信息,它是一个单向的 数据通道。 n输入流从某个外部的数据源向程序输入数据 n输出流从程序向外部数据目标输出数据 内存文件 输入流 InputStream(

2、字节流) Reader(字符流) 输出流 OutputStream(字节流) Writer(字符流) 10.2 输入输出流类库 nJava语言的流类都封装在java.io包中。 n字节流每次读写8位(一个字节)的二进制数 ,一般为二进制文件。 n字符流每次读写16位二进制数,并将其作为一 个字符而不是二进制为来处理。可以表示任何 的文本信息。 n处理字节流:InputStream和OutputStream n处理字符流:Reader和Writer n输入流(InputStream)和输出流(OutputStream) 构成字节流的祖先,用来读写如图片、声音之类 的二进制文件。这两个类直接继承了

3、Object类。 InputStream和OutputStream都是抽象类, InputStream为其他所有字节输入流的超类,而 OutputStream为其他所有字节输出流的超类。 n读取器(Reader)和写出器(Writer)是所有字符流的 超类,它们是直接继承Object类的抽象类。用来 处理纯文本文件。Reader和Writer可读写16位的 字符流。作为抽象类,Reader和Writer必须被子 类化才能实现字符流的读写工作。 10.2使用InputStream和OutputStream InputStream的方法: npublic int read() throws IOE

4、xception q从输入流读取下一个字节,字节值为0-255,如果输入流中 不再有数据,返回-1表示输入结束。这是一个阻塞方法,直 到有数据可读,或数据流结束,或发生异常时才返回。这是 一个抽象方法,需要在具体的子类中加以实现。 npublic int read(byte b) throws IOException q从输入流读取一组数据存入缓冲区b中。返回读取字节个数 ,如果达到数据流结束返回-1。 npublic int read(byte b, int off, int len) throws IOException q从输入流读取最多len字节数据存入缓冲区b中,第一个字节 存储在b

5、off,随后的按序摆放。返回读取字节个数,如果 至数据流结束返回-1。 npublic int available() throws IOException q返回输入流中无需阻塞可直接读取字节个数。 npublic void mark(int readlimit) throws IOException q在输入流中标记当前位置,以后可调用reset方法返回该位置 ,这样可以重复读取标记以后的数据。 npublic void reset() throws IOException q重置流的读取位置,回到上次调用mark方法标记的位置。 npublic long skip(long n) thr

6、ows IOException q从输入流中忽略n个字节的数据,返回值为实际忽略的字节 个数。 npublic void close() throws IOException n关闭输入流,释放占用的系统资源。 流中方法都声明抛出异常,在程序中调用流方法时必须处理异常, 否则编译不能通过 在OutputStrem中定义了5个方法: npublic abstract void write(int b) throws IOException q向输出流写入一个字节。写出字节为整数b的低字节,整数b 的3个高字节被忽略。这是一个抽象方法,需要在具体的子 类中加以实现。 npublic void wr

7、ite(byte b) throws IOException q把缓冲区b中的全部数据写入输出流。 npublic void write(byte b, int off, int len) throws IOException q把缓冲区b中从boff开始的len个字节的数据写入输出流。 npublic void flush() throws IOException q刷新输出流,强制输出缓冲区的数据立即写出。 npublic void close() throws IOException q关闭输出流。 文件输入输出流 n文件读写是最常见的I/O操作,通过文件流来 连接磁盘文件,读写文件内容

8、是一件很轻松的 工作。文件输入流(FileInputStream)和文件 输出流(FileOutputStream)是抽象类 InputStream和OutputStream的具体子类, 实现了文件的读写。 n文件的读写工作包括3个步骤: q打开文件输入流或输出流 q文件读或写操作 q关闭文件输入流或输出流 nFileInputStream实现读文件,调用FileInputStream 的构建器可以打开一个文件输入流。 FileInputStream的有3个构建器: qpublic FileInputStream(String fileName) throws FileNotFoundExce

9、ption qpublic FileInputStream(File file) throws FileNotFoundException qpublic FileInputStream(FileDescriptor fdObj) n第一个方法指定文件名,第二个方法指定一个File对 象。第三个方法需要指定一个文件描述符对象 (FileDescriptor)。如果我们试图在一个不存在的文 件上打开一个文件输入流,FileInputStream的构建 器会抛出异常FileNotFoundException,它是 IOException的一个子类,程序应该捕捉这个异常, 或者也可以捕捉IOExce

10、ption。 实例 n读取文件(文件字节输入流,目的:使用 FileInputStream类) n用FileInputStream的对象把文件读入到内存。 nimport java.io.*; npublic class test23 n public static void main(String args) n FileInputStream fin=null; n try n n fin=new FileInputStream(“d:a.txt“); n int n=0; n /while(n=fin.read()!=-1) n /System.out.print(char)n); n

11、byte b=new byte12; n while(n=fin.read(b)!=-1) n n String s=new String(b,0,n); n System.out.println(s); n n n catch(IOException e) n n System.out.println(e.getMessage(); n n finally n n try n n if(fin!=null) n fin.close(); n n catch(IOException e) n n System.out.println(e.getMessage(); n n n n n n ni

12、mport java.io.*; npublic class FileInputS2 n public static void main(String args)throws IOException n FileInputStream fin=new FileInputStream(“d:/c.txt“); n byte b=new bytefin.available(); n int n=fin.read(b); n String s=new String(b,0,n); n System.out.print(s); n fin.close(); n n 和FileInputStream对应

13、的文件输出流 FileOutputStream实现了文件输出功能,它的 构建器如下: npublic FileOutputStream(String name) throws FileNotFoundException npublic FileOutputStream(String name, boolean append)throws FileNotFoundException npublic FileOutputStream(File file) throws FileNotFoundException npublic FileOutputStream(FileDescriptor fdO

14、bj) throws FileNotFoundException n调用第一个构建器时,如果name指定的文件 不存在,将创建该文件,并同时建立一个输出 流;如果name指定的文件已存在,该文件的 内容将会被覆盖。在第二个构建器中,我们可 以通过第二个参数append指定是否对已存在 的文件进行覆盖,如果append为true,将对文 件进行追加写,即新输出的内容将添加到文件 尾端,如果append为false,则覆盖原文件。 import java.io.*; public class test29 public static void main(String args) FileOutpu

15、tStream fout=null; try fout=new FileOutputStream(“d:a.txt“); String s=“hello java1123“; fout.write(s.getBytes(); catch(IOException e) System.out.println(e.getMessage(); finally try if(fout!=null) fout.close(); catch(IOException e) System.out.println(e.getMessage(); nmport java.io.*; npublic class Fi

16、leOUt n public static void main(String args)throws IOException n FileOutputStream fout=new FileOutputStream(“d:123.txt“,true); n String s1=“hello java“; n String s2=“你好!“; n fout.write(s1.getBytes(); n fout.write(s2.getBytes(); n n fout.close(); n n n n n n 二进制图形文件的复制 nimport java.io.*; npublic class a

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

当前位置:首页 > 中学教育 > 职业教育

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