10.1.3 第一个简单的IO流程序及深入理解
当程序需要读取数据源的数据时,就会通过IO流对象开启一个通向数据源的流,通过这个IO流对象的相关方法可以顺序读取数据源中的数据。
程序操作步骤
1、创建源
2、选择流
3、操作
4、释放(gc垃圾回收机制回收无用对象,只能释放内存资源,而不能释放与内存无关资源。但Java IO流不能被gc直接释放,需要手动释放资源。)
import java.io.*;
/**
*第一个IO程序
*1、创建源
*2、选择流
*3、操作
*4、释放资源
*/
public class IOTest01 {
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();//第一个数组 s
int data2 = is.read();//第二个数据 x
int data3 = is.read();//第三个数据 t
int data4 = is.read();//不是数据,文件的末尾返回-1
//System.out.println(data1);//104 101 108
System.out.println((char)data1);//s
System.out.println((char)data2);//x
System.out.println((char)data3);//t
System.out.println(data4);//-1
//4、释放资源
is.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
1.读取的文件内容是已知的,可以使用固定次数的“int s= fis.read();”语句读取内容,
但是在实际开发中通常不知道文件的内容,在读取的时候需要配合while循环使用。
2.为了保证出现异常后流的正常关闭,通常要将流的关闭语句要放到finally语句块中,并且要判断流是不是null。
标准(经典)代码如下
public class IOTest02 {
public static void main(String[] args) throws IOException {
//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) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
//4、释放资源
try{
if(null!=is){
is.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}