在java的io编程中,读取文件是分为两个步骤的
1.将文件中的数据转换为流对象
2.读取流对象的数据
具体步骤
1.创建流对象
2.读取流对象内部的数据
3.关闭流对象
以下是具体代码,包含注释
public static void main(String[] args) throws IOException {
int index;
byte[] bytes = new byte[100];//数组长度为100
FileInputStream fis=new FileInputStream("D:\\\\java_io\\\\a.text");
FileInputStream fis2=new FileInputStream("D:\\\\java_io\\\\a.text");
int num;
while((num=fis.read())!=-1) {//依次向下读取返回int数据类型
System.out.print(" num:"+num);
}
System.out.println("");
index=fis2.read(bytes);//从流中读取bytes数组(100)长度个字节的数据存储到bytes数组中
System.out.println(" index:"+index);//index是流中数据的个数
System.out.println(new String(bytes,0,index));
for (byte b : bytes) {
System.out.print(b+" ");
}
}
需要注意的几点如下
fis.read()方法是依次读取一个个字节数据,返回每个数据的整型,该方法的作用是每次读取流中的一个字节,如果需要读取流中的所有数据,需要使用循环读取。
fis.read(bytes)此方法是就实现了将流对象fis中的数据读取到字节数组bytes中,该行代码的作用是将fis流中的数据读取出来,并依次存储到数组data中,返回值为实际读取的有效数据的个数。
扩展为什么read()返回值是int类型
一个大佬写的很详细(https://blog.csdn.net/music0ant/article/details/60337974)
拓展字符流:
读取文本文件时:使用Reader类的子类FileReader进行实现,在编写代码时,只需要将上面示例代码中的byte数组替换成char数组即可。
注意:
读取二进制文件或自定义格式的文件时:使用FileInputStream进行读取,方便对于读取到的数据进行解析和操作。