JAVA IO流read方法基础使用

java io流read方法基础用法

  • 一、FileInputStream
  • 二、字节数组读取
  • 三、循环读取

一、FileInputStream

首先使用FileInputStream创建一个读入流,读取的文件内容为abc三个字母

class readTest{
public static void main(String[] args){

//手敲没有处理异常try catch语句

FileInputStream fis = new FileInputStream("f1.txt");
//read方法,每次只读一个字节,一个英文字母就是一个字节,所以每次只读到一个字母。
//read方法的返回值是int类型,就是实际的字节内容
int readdata = fis.read();
System.out.println(readdata);//本次读到的是97
System.out.println((char)readdata);//将97转换为字符a
System.out.println(String.valueOf((char)readdata));//得到字符串a


readdata = fis.read();
System.out.println(readdata);//本次读到的是98
System.out.println((char)readdata);//将98转换为字符b
System.out.println(String.valueOf((char)readdata));//得到字符串b


readdata = fis.read();
System.out.println(readdata);//本次读到的是99
System.out.println((char)readdata);//将99转换为字符c
System.out.println(String.valueOf((char)readdata));//得到字符串c

//读取后关闭流
fis.close();




}

}

二、字节数组读取

//逐个读取字符的效率较低,所以改进为每次读2个字节的内容

FileInputStream fis = new FileInputStream("f1.txt");
byte[] bytes = new byte[2];//new一个byte数组,长度为2,每次可以往里面最多读2个字节
int readcount = fis.read(bytes);//传入数组后,read的返回值为读到的字节数量,就是读到了几个
System.out.println(readcount);//输出结果为2,读到了2个字节的内容
System.out.println(new String(bytes));//将读到字节的数组转换成字符串:ab

readcount = fis.read(bytes);//继续用2个长度的数组进行读取
System.out.println(readcount);//输出结果为1,读到了1个字节的内容。
System.out.println(new String(bytes));//将读到字节的数组转换成字符串:cb。
//虽然读到了1个字节,但新读到的字节只把数组中的历史的第一个字节给覆盖了,第二个字节还存在,所以数组转换为字符串后是cb

readcount = fis.read(bytes);//继续用2个长度的数组进行读取
System.out.println(readcount);//输出结果为-1,因为没有读取到内容。

fis.close();

三、循环读取

//我们需要的是将读到的数字字节转换为字符串,上述方法显然没有做到,进行改进。

FileInputStream fis = new FileInputStream("fis.txt");

int readcount = null;
byte[] bytes = new byte[2];

//改进1,使用读取不到内容返回-1的特征进行循环读取
while(readcount = fis.read(bytes)) != -1{

System.out.println(readcount);
System.out.println(new String(bytes, 0, readcount));//从0开始,将数组转换为字符串,转换个数为readcount。

}
fis.close();

你可能感兴趣的:(java,jvm,开发语言)