第10章输入与输出处理推荐

上传人:小** 文档编号:57575105 上传时间:2018-10-23 格式:PPT 页数:50 大小:127.02KB
返回 下载 相关 举报
第10章输入与输出处理推荐_第1页
第1页 / 共50页
第10章输入与输出处理推荐_第2页
第2页 / 共50页
第10章输入与输出处理推荐_第3页
第3页 / 共50页
第10章输入与输出处理推荐_第4页
第4页 / 共50页
第10章输入与输出处理推荐_第5页
第5页 / 共50页
点击查看更多>>
资源描述

《第10章输入与输出处理推荐》由会员分享,可在线阅读,更多相关《第10章输入与输出处理推荐(50页珍藏版)》请在金锄头文库上搜索。

1、1,第10章 输入与输出处理,本章讲述的主要内容 流的层次结构; 输入/输出流、数据输入/输出流、文件输入/输出流及它们的常用方法; 随机访问流; 对象流以及对象序列化; 输入/输出中的异常处理。,2,10.1 流的层次结构,Java将读取数据的对象称为输入流; 能向其写入数据的对象称为输出流。 使用输入/出流必须在程序的开头加上语句 import java.io.*。 InputStream和OutputStream类结构如图10-1(a) 和10-1(b)。,5,10.2 File类,File类与InputStream / OutputStream类同属于一个包,它不允许访问文件内容。Fi

2、le类主要用于命名文件、查询文件属性和处理文件目录。例如程序10-1。,import java.io.*; / 程序10-1 public class showAttribute void showAttributes(String fileName)File f=new File(fileName); if( f.exists( ) ) System.out.println(“Attributes of “+fileName);System.out.println(“Exist: “+f.exists();System.out.println(“Can read: “+f.canRead()

3、;System.out.println(“Can write: “+f.canWrite();System.out.println(“Is file: “+f.isFile();System.out.println(“Is director: “+f.isDirectory();System.out.println(“Is absolute path: “+f.isAbsolute();elseSystem.out.println(fileName+“ does not exist!“);,public static void main(String args )if(args.length!

4、=1)System.out.println(“Usage: java fileTest “);System.exit(1); fileTest obj=new fileTest ( );obj.showAttributes(args0); ,采用该程序测试其自身,运行结果如下: Attributes of showAttribute.java Exist: true Can read: true Can write: true Is file: true Is director: false Is absolute path: false,9,10.3 InputStream类和OutputS

5、tream类,它们都是抽象类,不能创建对象;必须通过其子类实现实例化。,10,10.3.1 InputStream类的常用方法,1. public abstract int read( ):读取一个byte的数据,返回值是高位补0的int类型值。2.public int read(byte b ):读取b.length个字节的数据放到b数组中。返回值是读取的字节数。该方法实际上是调用下一个方法实现的。3. public int read(byte b , int off, int len):从输入流中最多读取len个字节的数据,存放到偏移量为off的b数组中。,11,10.3.1 InputS

6、tream类的常用方法(续),4. public int available( ):返回输入流中可以读取的字节数。注意:若输入阻塞,当前线程将被挂起。5. public long skip(long n):忽略输入流中的n个字节,返回值是实际忽略的字节数。6. public int close( ) :关闭输入流。,12,10.3.2 OutputStream类的常用方法,1. public void write(byte b ):将参数b中的字节写到输出流。2. public void write(byte b , int off, int len) :将参数b的从偏移量off开始的len个

7、字节写到输出流。3. public abstract void write(int b) :先将int转换为byte类型,把低字节写入到输出流中。,13,10.3.2 OutputStream类的常用方法(续),4. public void flush( ) : 将数据缓冲区中数据全部输出,并清空缓冲区。5. public void close( ) : 关闭输出流并释放与流相关的系统资源。注意以下两点:,1. 上述各方法都有可能引起异常。 2. InputStream和OutputStream都是抽象类,不能创建这种类型的对象。,14,10.3.3 FileInputStream类,File

8、InputStream类是InputStream类的子类,用来处理以文件作为数据输入源的数据流。使用方法:,方式1: File fin=new File(“d:/abc.txt“); FileInputStream in=new FileInputStream(fin); 方式2:FileInputStream in=new FileInputStream(“d: /abc.txt“);,/ 程序10-2 import java.io.*;class showFile void showInfo( ) throws Exceptionint size=0;/ 下列一行语句可能会产生异常 Fil

9、eInputStream fin=new FileInputStream(“d:/abc.txt“);,trysize=fin.available( );System.out.println(“file size = “+size);System.out.println(“Read the first 1/4“);byte b =new bytesize/4;fin.read(b);String str=new String(b);System.out.println(“The first 1/4 is: “+str);System.out.println(“nSkip the next 1/

10、2 :“);fin.skip(size/2);System.out.println(“available :“+fin.available( );,catch(FileNotFoundException e) System.out.println(“File not found : “+e);throw e;finally fin.close( ); ,public class fileReadTest public static void main(String args )showFile obj=new showFile( );tryobj.showInfo( );catch(Excep

11、tion e) System.out.println(“File not found : “+e);e.printStackTrace( ); ,19,10.3.4 FileOutputStream类,FileOutputStream类用来处理以文件作为数据输出目的数据流; 创建一个文件流对象有两种方法:,方式1: File f=new File(“d:/abc.txt“); FileOutputStream out=new FileOutputStream (f); 方式2:FileOutputStream out=new FileOutputStream(“d:/abc.txt“);,/

12、程序10-3 import java.io.*;class fileWriteInfo void writeInfo( )throws IOExceptionint size=0; byte b =new byte6;FileOutputStream fout=newFileOutputStream(“d:/abc.txt“);,trySystem.out.print(“Enter 6 chars: “);for(int i=0;i6;i+)bi=(byte)System.in.read( );fout.write(b);catch(IOException e)System.out.print

13、(“file IOException!“);finally fout.close( ); ,public class fileWriteTest public static void main(String args ) fileWriteInfo obj=new fileWriteInfo ( ); tryobj.writeInfo( );catch(IOException e) System.out.println(“File not found : “+e);e.printStackTrace( ); ,23,写文件时注意,在向文件中写数据时,若文件已经存在,则覆盖存在的文件;当流的读/

14、写操作结束时,应调用close方法关闭流。,24,10.3.5 DataInputStream和DataOutputStream类,DataInputStream类对象可以读取各种类型的数据,而DataOutputStream类对象可以写各种类型的数据; 创建这两类对象时,必须使新建立的对象指向构造函数中的参数对象。例如:,FileInputStream in=new FileInputStream(“d:/abc.txt“);DataInputStream din=new DataInputStream(in);,25,DataInputStream类的常用方法,1.public final

15、 int skipBytes(long n): 跳过输入流中n个字节的数据。 2.public final byte readByte( ):从输入流中读取1个字节的数据。 3.public final char readChar( ):从输入流中读取1字符的数据。 4.public final int readInt( ):从输入流中读取4字节的数据。,26,DataInputStream类的常用方法(续),5.public final long readLong( ):从输入流中读取10字节的数据。 6.public final String readLine( ):从数据输入流中读取一行

16、,并且包括换行符。 7.public final void readFully(byte b ):从数据输入流中读取b.length 个字节的数据,读到b数组中。,27,DataOutputStream类 的常用方法,1. public final int size( ):返回写到输出流中的字节数。 2. public final void writeBytes(String s):将字符串s中的字符写到输出流中,写时忽略高10位。 3. public final void writeChars(String s):将字符串s中的字符写到输出流中。 4. public final void writeInt(int v):将参数v按4个字节的形式写到输出流中。 ,

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

当前位置:首页 > 商业/管理/HR > 经营企划

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