Java编程那些事儿系列文章(全集目录)
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中读取即可。