字节输入流 read 读取文件

在读取文件时,会抛出异常,边代码时一般都是用到try catch,下面的例子的代码都是写在代码区的
try {
代码区
} catch (FileNotFoundException e) {
// 文件没有找到
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
//文件读写异常
// TODO Auto-generated catch block
e.printStackTrace();

  1. int read() 从输入流中读取单个字节,返回所读取的字节数据
(这种方法每次只能读取一个字节,很麻烦)
InputStream is=new FileInputStream("F:/IO/Java01.txt");
//开始读取信息
//先定义一个字节数组 存放数据
byte[] b=new byte[8];
//定义一个记录索引的变量
int index=0;
while((i=is.read())!=-1){
b[index]=(byte)i;
index++;
}
//把字节数组转为字符串
System.out.println(new String(b));
//关闭流
is.close();
  1. int read(byte[] b) 从输入流中读取最多b.length长度的字节,并存储在字节数组b中,返回实际读取的字节数(推荐使用第二种方法)
// 从文件地址中读取内容到程序中
InputStream is=new FileInputStream("F:/IO/Java01.txt");
//开始读取信息
//先定义一个字节数组 存放数据
while(is.available()==0);//有时候在读取网络文件时 网速低的情况下,并不能判断出文件的长度,就用循环直至文件下载好了为止,但是这还是会存在风险
byte[] b=new byte[is.available()];
is.read(b); //完整的读取一个文件
//把字节数组转为字符串
System.out.println(new String(b));
//关闭流
is.close();
  1. int read(byte[] b,int off , int len); 从输入流中读取len长度的字节,保存到字节数组b中,保存位置从off开始 (这种方式每次需要把数组的成都设置的很大,不推荐使用)
InputStream is=new FileInputStream("F:/IO/Java01.txt");
//开始读取信息
//先定义一个字节数组 存放数据
byte[] b=new byte[8]; //要将长度设的长一点
//完整的读取一个文件
int off=0;
while(is.read(b, off, 2)!=-1){ //这里的2 代表每次最多可以读取两个,要是最后只剩一个字符了,还是能读取的
off+=2;
}
//把字节数组转为字符串
System.out.println(new String(b));
is.close();//关闭流
注:读取文件时使用字节 输出流比较繁琐,不方便,一般是使用字符输出流,还有就是用到InputStream等类时,用完之后要将其关闭

你可能感兴趣的:(Java)