文件输入流 FileInputStream

系统 1521 0

    FileInputStream 类从文件中读取数据。它有以下构造方法: 
    FileInputStream(File file)--------参数file指定文件的数据源 
    FileInputStream(String name)-------- 参数name指定文件数据源。在参数name中包含了文件路径信息。 
    下面这个FileInputStreamTester类读取test.txt文件中的内容。 
Java代码   收藏代码
  1. package  xiaohang.com;  
  2.   
  3. import  java.io.FileInputStream;  
  4. import  java.io.IOException;  
  5.   
  6. public   class  FileInputStreamTester {  
  7.      public   static   void  main(String[] args)  throws  IOException {  
  8.         FileInputStream in =  new  FileInputStream( "D:\\test.txt" );  
  9.          int  data;  
  10.          while  ((data = in.read()) != - 1 ) {  
  11.             System.out.println(data +  " " );  
  12.         }  
  13.          // 关闭此文件输入流并释放与此流有关的所有系统资源   
  14.         in.close();  
  15.     }  
  16. }  

      假定在 test.txt文件中包含的字符串为"abc1好" ,并且假定文件所在的操作系统的默认字符编码为GBK, 那么在文件中实际存放的是这5个字符的GBK 字符编码, 字符"a"、"b"、"c"、 和 "1" 的GBK字符编码各占一个字节,分别是97、98、99和49。“好”的GBK字符编码占2个字节,为186和195。文件输入流的read()方法每次读取一个字节,因此以上程序打印的结果为: 

文件输入流 FileInputStream  

   如果文件很大,为了提高效率,可以使用read(byte[] buff)方法,它能减少物理文件的次数。下面这个UseBuffer类的main()方法把test.txt 中数据拷贝到out.txt中。在进行读写操作时,都使用了字节数组缓冲区,每次最多读写1024个字节。 
Java代码   收藏代码
  1. package  xiaohang.com;  
  2.   
  3. import  java.io.FileInputStream;  
  4. import  java.io.FileOutputStream;  
  5. import  java.io.IOException;  
  6.   
  7. public   class  UseBuffer {  
  8.      public   static   void  main(String[] args)  throws  IOException {  
  9.          final   int  SIZE= 1024 ;  
  10.         FileInputStream in =  new  FileInputStream( "D:\\test.txt" );  
  11.         FileOutputStream out =  new  FileOutputStream( "D:\\out.txt" );  
  12.          //创建字节数组缓冲区   
  13.          byte [] buff =  new   byte [SIZE];  
  14.          //把test.txt文件中的数据读入到buff中   
  15.          int  len = in.read(buff);  
  16.          while  (len!=- 1 ) {  
  17.              //把buff中的数据写到out.txt文件中   
  18.             out.write(buff,  0 , len);  
  19.              //从新读取输入流,此时已到达输入流的结尾   
  20.             len=in.read();  
  21.         }  
  22.         in.close();  
  23.         out.close();  
  24.     }  
  25. }  

   如果test.txt文件与UseBuffer类的 .class 文件位于同一目录下,也可以通过Class类的getResourceAsStream()方法来获得输入流,例如: 
Java代码   收藏代码
  1. InputStream in = UseBuffer. class .getResourceAsStream( "test.txt" ); //适用于静态方法或实例方法   
  2. //或者:   
  3. InputStream in =  this .getClass().getResourceAsStream( "test.txt" );  //适用于实例方法   

  以上方法的好处在于只提供test.txt文件的相对路径。

文件输入流 FileInputStream


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论