下载两种压缩包,因业务层已经写死,是根据ID拼装成的下载地址,所以需要判断流中是否有数据,如果没有然后关闭流,重新获取FileInputStream。
FileInputStream中可以存储读取内容大小的参数在channel中,这个channel对象是FileChannel类型,可以通过FileChannel的size()方法来获取大小,使用时需要捕获其IOException异常。
FileInputStream in = null;
try {
in = new FileInputStream(zipPath);
long size = in.getChannel().size();
} catch (Exception e) {
if(in != null) {
in.close();
}
in = new FileInputStream(realPath.replace(FileTypeEnum.FILE_TYPE_ZIP.fileStufix, FileTypeEnum.FILE_TYPE_RAR.fileStufix));
}
也可以使用FileInputStream中的available()方法
import java.io.*;
public class test
{
public static void main(String args[]) throws Exception{
FileInputStream fin=new FileInputStream("F:\\sample.txt");
byte[] by=new byte[1000];
int size=fin.available();
if(size==0){
System.out.println("文件为空!!");
}else{
int len=fin.read(by);
System.out.println(new String(by,0,len));
}
}
}