疯狂java


您现在的位置: 疯狂软件 >> 新闻资讯 >> 正文

java输入输出流随笔


 

  输入流表示从一个源获取数据,输出流表示向一个目标输出数据。

  InputStream 和OutputStream 都是抽象函数,不能被实例化,只有生成其子类才能实现一定的功能

  Java中的流分为两种:

  1) 字节流:数据流中最小的数据单元是字节

  2) 字符流:数据流中最小的数据单元是字符, Java中的字符是Unicode编码,一个字符占用2个字节。

  主要的类如下:

  1. File(文件特征与管理):用于文件或者目录的描述信息,例如生成新目录,修改文件名,删除文件,判断文件所在路径等。

  2. InputStream(二进制格式操作):抽象类,基于字节的输入操作,是所有输入流的父类。定义了所有输入流都具有的共同特征。

  3. OutputStream(二进制格式操作):抽象类,基于字节的输出操作。是所有输出流的父,定义了所有输出流都具有的共同特征。

  4. Reader(文件格式操作):抽象类,基于字符的输入操作。

  5. Writer(文件格式操作):抽象类,基于字符的输出操作。

  6. RandomAccessFile(随机文件操作):它的功能丰富,可以从文件的任意位置进行存取(输入输出)操作。

  File类,以不同的参数形式灵活的接收文件和目录名信息。

  1)File (String pathname)

  例: Filef1=new File("FileTest1.txt");//创建文件对象f1,f1所指的文件是在当前目录下创建的FileTest1.txt

  2)File (String parent , String child)

  例: File f2=new File("D:\dir1","FileTest2.txt") ;// 注意:D:\dir1目录事先必须存在,否则异常

  3)File (File parent , String child)

  例: File f4=new File("\dir3");

  File f5=new File(f4,"FileTest5.txt");//在如果 \dir3目录不存在使用f4.mkdir()先创建

  String[ ] list ( ) //将目录中所有文件名保存在字符串数组中返回。

  boolean mkdir( ); //创建目录

  InputStream抽象类(继承自InputStream 的流都是向程序中输入数据的) :

  (1)abstract int read( ):读取一个byte的数据,返回值是高位补0的int类型值。若返回值=-1说明没有读取到任何字节读取工作结束。

  (2)int read(byte b[ ]):读取b.length个字节的数据放到b数组中。返回值是读取的字节数。该方法实际上是调用下一个方法实现的

  (3)int read(byte b[ ], int off, int len):从输入流中最多读取len个字节的数据,存放到偏移量为off的b数组中。

  (4)int available( ):返回输入流中可以读取的字节数。注意:若输入阻塞,当前线程将被挂起,如果InputStream对象调用这个方法的

  话,它只会返回0,这个方法必须由继承InputStream类的子类对象调用才有用。

  (5)long skip(long n):忽略输入流中的n个字节,返回值是实际忽略的字节数, 跳过一些字节来读取

  (6)public int close( ) :我们在使用完后,必须对我们打开的流进行关闭.

  主要的子类:

  1) FileInputStream把一个文件作为InputStream,实现对文件的读取操作

  2) ByteArrayInputStream:把内存中的一个缓冲区作为InputStream使用

  3) StringBufferInputStream:把一个String对象作为InputStream

  4) PipedInputStream:实现了pipe的概念,主要在线程中使用

  5) SequenceInputStream:把多个InputStream合并为一个InputStream

  OutputStream抽象类(3个write方法来做数据的输出):   1.void write(byte b[ ]):将参数b中的字节写到输出流。

  2.void write(byte b[ ], int off, int len):将参数b的从偏移量off开始的len个字节写到输出流。

  3.abstract void write(int b):先将int转换为byte类型,把低字节写入到输出流中。

  4.void flush( ): 将数据缓冲区中数据全部输出,并清空缓冲区。

  5.void close( ): 关闭输出流并释放与流相关的系统资源。

  主要的子类:

  1)ByteArrayOutputStream:把信息存入内存中的一个缓冲区中

  2)FileOutputStream:把信息存入文件中

  3)PipedOutputStream:实现了pipe的概念,主要在线程中使用

  4)SequenceOutputStream:把多个OutStream合并为一个OutStream

  IOException异常类的子类

  1.public class EOFException:

  非正常到达文件尾或输入流尾时,抛出这种类型的异常。

  2.public class FileNotFoundException:

  当文件找不到时,抛出的异常。

  3.public class InterruptedIOException:

  当I/O操作被中断时,抛出这种类型的异常。