Java IO_标准步骤 尚学堂173

第一个程序:理解操作步骤
1、创建源
2、选择流
3、操作
4、释放资源
 

在相对路径下创建一个文件abc.txt:

FileInputStream类是InputStream抽象类的一个实现类:

public
class FileInputStream extends InputStream
{......}

第一个程序:理解操作步骤:

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;

public class Test {
	public static void main(String[] args) {
		//1、创建源
		File src = new File("abc.txt");
		//2、选择流
		try {
			InputStream is = new FileInputStream(src);
			//3、操作(读取)
			int data1 = is.read();//第一个数据j
			int data2 = is.read();//第一个数据a
			int data3 = is.read();//第一个数据v
			int data4 = is.read();//第一个数据a
			int data5 = is.read();//文件的末尾返回-1
			System.out.println((char)data1);
			System.out.println((char)data2);
			System.out.println((char)data3);
			System.out.println((char)data4);
			System.out.println(data5);
			//4、释放资源
			is.close();
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
}

输出结果:

j
a
v
a
-1


标准写法:

用while读文件

把close方法的调用放在 finally 里面,这样,如果捕捉到了异常,也能释放资源。这需要提升is的作用域,不能在try里面定义is。

把close方法的调用嵌套在一个if判断里面,确保用到了才通知操作系统去释放资源,避免出现空指针异常。

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;

public class Test {
	public static void main(String[] args) {
		//1、创建源
		File src = new File("abc.txt");
		//2、选择流
		InputStream is = null;
		try {
			is = new FileInputStream(src);
			//3、操作(读取)
			int temp;
			while((temp = is.read()) != -1) {
				System.out.println((char)temp);
			}
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally {
			//4、释放资源
			try {
				if(null != is) {
					is.close();
				}
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		
	}
}

输出结果:

j
a
v
a


 

©️2020 CSDN 皮肤主题: 游动-白 设计师:上身试试 返回首页