JAVA中常用IO流类:FileInputStream和FileOutputStream

来源:互联网 发布:巴比伦空中花园知乎 编辑:程序博客网 时间:2024/06/05 03:32
原文地址:http://blog.csdn.net/caixiexin/article/details/6719407

FileInputStream 用于读取本地文件中的字节数据,继承自InputStream类

构造方法摘要FileInputStream(File file) 
          通过打开一个到实际文件的连接来创建一个FileInputStream,该文件通过文件系统中的 File 对象 file 指定。FileInputStream(FileDescriptor fdObj) 
          通过使用文件描述符 fdObj 创建一个FileInputStream,该文件描述符表示到文件系统中某个实际文件的现有连接。FileInputStream(String name) 
          通过打开一个到实际文件的连接来创建一个FileInputStream,该文件通过文件系统中的路径名 name 指定。

方法摘要 intavailable() 
          返回下一次对此输入流调用的方法可以不受阻塞地从此输入流读取(或跳过)的估计剩余字节数。 voidclose() 
          关闭此文件输入流并释放与此流有关的所有系统资源。protected  voidfinalize() 
          确保在不再引用文件输入流时调用其close 方法。 FileChannelgetChannel() 
          返回与此文件输入流有关的唯一FileChannel 对象。 FileDescriptorgetFD() 
          返回表示到文件系统中实际文件的连接的 FileDescriptor 对象,该文件系统正被此FileInputStream 使用。 intread() 
          从此输入流中读取一个数据字节。 intread(byte[] b) 
          从此输入流中将最多 b.length 个字节的数据读入一个 byte 数组中。 intread(byte[] b, int off, int len) 
          从此输入流中将最多 len 个字节的数据读入一个 byte 数组中。 longskip(long n) 
          从输入流中跳过并丢弃 n 个字节的数据。

其中read()返回的是读入的一个字节所对应的int值(0-255),而read(byte[] b)read(byte[] b, int off, int len) 返回的是读入的字节数

 

 

FileOutputStream用于将字节数据写出到文件。继承自OutputStream类

构造方法摘要FileOutputStream(File file) 
          创建一个向指定 File 对象表示的文件中写入数据的文件输出流。FileOutputStream(File file, boolean append) 
          创建一个向指定 File 对象表示的文件中写入数据的文件输出流。FileOutputStream(FileDescriptor fdObj) 
          创建一个向指定文件描述符处写入数据的输出文件流,该文件描述符表示一个到文件系统中的某个实际文件的现有连接。FileOutputStream(String name) 
          创建一个向具有指定名称的文件中写入数据的输出文件流。FileOutputStream(String name, boolean append) 
          创建一个向具有指定 name 的文件中写入数据的输出文件流。

  

方法摘要 voidclose() 
          关闭此文件输出流并释放与此流有关的所有系统资源。protected  voidfinalize() 
          清理到文件的连接,并确保在不再引用此文件输出流时调用此流的 close 方法。 FileChannelgetChannel() 
          返回与此文件输出流有关的唯一FileChannel 对象。 FileDescriptorgetFD() 
          返回与此流有关的文件描述符。 voidwrite(byte[] b) 
          将 b.length 个字节从指定 byte 数组写入此文件输出流中。 voidwrite(byte[] b, int off, int len) 
          将指定 byte 数组中从偏移量 off 开始的 len 个字节写入此文件输出流。 voidwrite(int b) 
          将指定字节写入此文件输出流。
实例代码:使用这两个类进行文件复制:

 

[java] view plain copy
print?
  1. import java.io.FileInputStream;  
  2. import java.io.FileOutputStream;  
  3. import java.io.IOException;  
  4. class IODemo  
  5. {  
  6.     public static void main(String[] args)   
  7.     {  
  8.         try  
  9.         {  
  10.         //使用FileInputStream和FileOutputStream进行文件复制  
  11.         FileInputStream fis=new FileInputStream(“a.txt”);  
  12.         FileOutputStream fos=new FileOutputStream(“b.txt”);  
  13.             int read;  
  14.             //read=fis.read();  
  15.             byte b[]=new byte[1024];  
  16.             //读取文件,存入字节数组b,返回读取到的字符数,存入read,默认每次将b数组装满  
  17.             read=fis.read(b);  
  18.             while(read!=-1)  
  19.             {  
  20.                 fos.write(b,0,read);  
  21.                 read=fis.read(b);  
  22.                 //read=fis.read();  
  23.             }  
  24.             fis.close();  
  25.             fos.close();  
  26.         }  
  27.         catch (IOException e)  
  28.         {  
  29.             e.printStackTrace();  
  30.         }  
  31.           
  32.     }  
  33. }  
import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;class IODemo{    public static void main(String[] args)     {        try        {        //使用FileInputStream和FileOutputStream进行文件复制        FileInputStream fis=new FileInputStream("a.txt");        FileOutputStream fos=new FileOutputStream("b.txt");            int read;            //read=fis.read();            byte b[]=new byte[1024];            //读取文件,存入字节数组b,返回读取到的字符数,存入read,默认每次将b数组装满            read=fis.read(b);            while(read!=-1)            {                fos.write(b,0,read);                read=fis.read(b);                //read=fis.read();            }            fis.close();            fos.close();        }        catch (IOException e)        {            e.printStackTrace();        }    }}


 


上述的例子采用也可以只使用对象fis的read()方法,逐个字节的读入数据,然后用对象fos的write()这个字节输出。

 

注:FileInputStream 和FileOutputStream适用于操作于任何形式的文件(因为是以字节为向导),如果想要操作文本文件,采用FileInputReader和FileOutputWriter效率更高。

阅读全文
0 0
原创粉丝点击