全屏

10.1.3 第一个简单的IO流程序及深入理解


【专业IT培训机构,真正零首付入学www.bjsxt.com


      当程序需要读取数据源的数据时,就会通过IO流对象开启一个通向数据源的流,通过这个IO流对象的相关方法可以顺序读取数据源中的数据。

【示例10-1】使用流读取文件内容(不规范的写法,仅用于测试)

import java.io.*;
public class TestIO1 {
	public static void main(String[] args) {
		try {
			//创建输入流
			FileInputStream fis = new FileInputStream("d:/a.txt"); // 文件内容是:abc
			//一个字节一个字节的读取数据
			int s1 = fis.read(); // 打印输入字符a对应的ascii码值97
			int s2 = fis.read(); // 打印输入字符b对应的ascii码值98
			int s3 = fis.read(); // 打印输入字符c 对应的ascii码值99
			int s4 = fis.read(); // 由于文件内容已经读取完毕,返回-1
			System.out.println(s1);
			System.out.println(s2);
			System.out.println(s3);
			System.out.println(s4);
			// 流对象使用完,必须关闭!不然,总占用系统资源,最终会造成系统崩溃!
			fis.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

      执行结果如图10-3所示:

图10-3 示例10-1运行效果图.png

图10-3 示例10-1运行效果图

      通过示例10-1我们要注意以下几点:

      1. 在示例10-1中我们读取的文件内容是已知的,因此可以使用固定次数的“int s= fis.read();”语句读取内容,但是在实际开发中通常我们根本不知道文件的内容,因此我们在读取的时候需要配合while循环使用。

      2. 为了保证出现异常后流的正常关闭,通常要将流的关闭语句要放到finally语句块中,并且要判断流是不是null。

      IO流的经典写法如示例10-2所示。

【示例10-2】使用流读取文件内容(经典代码,一定要掌握)

import java.io.*;
public class TestIO2 {
	public static void main(String[] args) {
		FileInputStream fis = null;
		try {
			fis = new FileInputStream("d:/a.txt"); // 内容是:abc
			StringBuilder sb = new StringBuilder();
			int temp = 0;
			//当temp等于-1时,表示已经到了文件结尾,停止读取
			while ((temp = fis.read()) != -1) {
				sb.append((char) temp);
			}
			System.out.println(sb);
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				//这种写法,保证了即使遇到异常情况,也会关闭流对象。
				if (fis != null) {
					fis.close();
				}
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
}

      执行结果如图10-4所示:

图10-4 示例10-2运行效果图.png

图10-4 示例10-2运行效果图

老鸟建议

      如上代码是一段非常典型的IO流代码,其他流对象的使用也基本是同样的模式!

分类导航
点击按住视频可拖动

缩小

关闭

  • 正在学习
  • 北京总部地址:北京市海淀区西三旗街道建材城西路中腾建华商务大厦东侧二层尚学堂
  • 咨询电话:400-009-1906 010-56233821
  • Copyright 2007-2015 北京尚学堂科技有限公司
  • 京ICP备13018289号-1 京公网安备11010802015183