快速业务通道

Java编程那些事儿87——文件操作之读取文件 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-24

Java编程那些事儿87——文件操作之读取文件

时间:2010-03-15 csdn 陈跃峰

11.3.1.3 读取文件

虽然前面介绍了流的概念,但是这个概念对于初学者来说,还是比较抽象的,下面以实际的读取文件为例子,介绍流的概念,以及输入流的基本使用。

按照前面介绍的知识,将文件中的数据读入程序,是将程序外部的数据传入程序中,应该使用输入流——InputStream或Reader。而由于读取的是特定的数据源——文件,则可以使用输入对应的子类FileInputStream或FileReader实现。

在实际书写代码时,需要首先熟悉读取文件在程序中实现的过程。在Java语言的IO编程中,读取文件是分两个步骤:1、将文件中的数据转换为流,2、读取流内部的数据。其中第一个步骤由系统完成,只需要创建对应的流对象即可,对象创建完成以后步骤1就完成了,第二个步骤使用输入流对象中的read方法即可实现了。

使用输入流进行编程时,代码一般分为3个部分:1、创建流对象,2、读取流对象内部的数据,3、关闭流对象。下面以读取文件的代码示例:

import java.io.*; /** * 使用FileInputStream读取文件 */ public class ReadFile1 {  public static void main(String[] args) {   //声明流对象   FileInputStream fis = null;   try{    //创建流对象    fis = new FileInputStream("e:\\a.txt");    //读取数据,并将读取到的数据存储到数组中    byte[] data = new byte[1024]; //数据存储的数组    int i = 0; //当前下标    //读取流中的第一个字节数据    int n = fis.read();    //依次读取后续的数据    while(n != -1){ //未到达流的末尾     //将有效数据存储到数组中     data[i] = (byte)n;     //下标增加     i++;     //读取下一个字节的数据     n = fis.read();    }    //解析数据    String s = new String(data,0,i);    //输出字符串    System.out.println(s);    }catch(Exception e){      e.printStackTrace();    }finally{        try{          //关闭流,释放资源          fis.close();         }catch(Exception e){}    }  } }

在该示例代码中,首先创建一个FileInputStream类型的对象fis:

fis = new FileInputStream("e:\\a.txt");

这样建立了一个连接到数据源e:\a.txt的流,并将该数据源中的数据转换为流对象fis,以后程序读取数据源中的数据,只需要从流对象fis中读取即可。

读取流fis中的数据,需要使用read方法,该方法是从InputStream类中继承过来的方法,该方法的作用是每次读取流中的一个字节,如果需要读取流中的所有数据,需要使用循环读取,当到达流的末尾时,read方法的返回值是-1。

在该示例中,首先读取流中的第一个字节:

int n = fis.read();

并将读取的值赋值给int值n,如果流fis为空,则n的值是-1,否则n中的最后一个字节包含的时流fis中的第一个字节,该字节被读取以后,将被从流fis中删除。

Java编程那些事儿87——文件操作之读取文件(2)

时间:2010-03-15 csdn 陈跃峰

然后循环读取流中的其它数据,如果读取到的数据不是-1,则将已经读取到的数据n强制转换为byte,即取n中的有效数据——最后一个字节,并存储到数组data中,然后调用流对象fis中的read方法继续读取流中的下一个字节的数据。一直这样循环下去,直到读取到的数据是-1,也就是读取到流的末尾则循环结束。

这里的数组长度是1024,所以要求流中的数据长度不能超过1024,所以该示例代码在这里具有一定的局限性。如果流的数据个数比较多,则可以将

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号