二进制读取文件

  1. package net.csdn.InputStream;  
  2.   
  3. import java.io.File;  
  4. import java.io.FileInputStream;  
  5. import java.io.FileNotFoundException;  
  6.   
  7. /** 
  8.  * Created by rabbit先生 on 2017/3/11 0011. 
  9.  */  
  10. public class FileInputStreamDemo {  
  11.     /** 
  12.      * 前面已经说过了File类,其主要作用就是对文件进行操作, 
  13.      * 例如读取文件,确定文件的名字,修改时间等问题,但都是基于文件级别的操作 
  14.      * 
  15.      * 今天,我们来将对文件内容的读取操作,在java中对文件进行操作使用的是IO流 
  16.      * IO流:就是指InputStream(输入流)和OutputStream(输出流) 
  17.      * 特别说明: 
  18.      * 输入流就是把文件中的东西进行输入到内存中, 
  19.      * 输出流就是把内存中的东西输出到文件中, 
  20.      * 我们可以使用内存来做分别,输入到内存就是输入流,从内存中输出就是输出流 
  21.      * 
  22.      * 我们使用最基础的类:FileInputStream 
  23.      * 使用文件路径:F:\fileInputStream\a.txt 
  24.      * a.txt文件中的内容是:abcdefghijklmn 
  25.      * 最后:流就像是水龙头一样,有开有关,所以使用交流之后记得对流进行关闭操作, 
  26.      * 不然会浪费内存,导致你的电脑开发的时候越来越卡 
  27.      */  
  28.   
  29.     //创建FileInputStream对象,使用FileInputStream(File file)  
  30.     //创建这个对象的时候需要传递一个File类,所以我们先创建File类,使用File(String pathname)  
  31.     //我们传递一个本地文件的绝对路径就可以了  
  32.     public  static  void main(String[] args) throws Exception {  
  33.         //创建File类对象  
  34.         File file = new File("F:\\fileInputStream\\a.txt");  
  35.         //创建FileInputStream对象,并关联对应的文件,创建对象的时候会出现异常  
  36.         FileInputStream fis = new FileInputStream(file);  
  37.         //我们现在可以通过FileInputStream对象对文件的内容进行读取了  
  38.         /*************第一种方式开始代码{一次读取一个}****************/  
  39.         //使用的时候请关闭方式二的代码  
  40. //      int len;  
  41.         //循环一个一个读取{当读取不到的时候会返回-1所以可以使用这个做循环的条件}  
  42.         //可能有人觉得奇怪,我文件里面的内容是字母,为什么可以使用int类型接收呢?  
  43.         //答案:读取的时候获取到的是ASCII碼{可以System.out.println(len);不转换输出试一下},  
  44.         // 所以我们需要转换  
  45. //      while ((len = fis.read()) != -1) {  
  46. //          System.out.println((char)len);  
  47. //      }  
  48. //      fis.close();//关闭流  
  49.         /*************第一种方式结束代码****************/  
  50.   
  51.         /*************第二种方式开始代码{一次读取多个放到字节数组中}****************/  
  52.         //这种方式效率更加高,因为不用频繁的操作硬盘,一次就读了1M  
  53.         //byte[] bytes = new byte[1024];//为了读取方便,一次读取1M,  
  54.         //将读取到的数据保存到bytes这个字节数组中  
  55.         int length;  
  56.         byte[] bytes = new byte[1024];  
  57.         while ((length = fis.read(bytes)) != -1) {  
  58.             System.out.print(new String(bytes, 0, length));//将数据变为字符串输出  
  59.         }  
  60.         fis.close();//关闭流  
  61.         //int read = fis.read(bytes);//返回读取到的长度{也是字节数组中的长度}  
  62.         /*************第二种方式结束代码****************/  
  63.   
  64.     }  
  65.   
  66.   
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值