在一个项目中因为图片上传一直报错socket超时,因此想到了是不是图片过大不能上传的问题所以需要打印bitmap的尺寸和大小
public long getBitmapsize(){
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR1) {
//据说3.1.X以下的版本不能用此方法
return bitmap.getByteCount();
}
// Pre HC-MR1
return bitmap.getRowBytes() * bitmap.getHeight();//为了兼容老版本使用
}
而更为常用的是获取bitmap的宽高,通过getWidth和getHeight方法。
增加对于文件大小的判断
1.适用于大文件,返回值为long
File f= new File("D:\\CentOS-6.5-x86_64-bin-DVD1.iso");
if (f.exists() && f.isFile()){
System.out.println(f.length());
}else{
System.out.println("file doesn't exist or is not a file");
}
2.适用于小文件,因为FileInputStream返回值为int,超过2147483647 就越界了最大只能显示1.99G
FileInputStream fis= null;
try{
File f= new File("D:\\CentOS-6.5-x86_64-bin-DVD1.iso");
fis= new FileInputStream(f);
logger.info(fis.available());
}catch(Exception e){
logger.error(e);
} finally{
if (null!=fis){
try {
fis.close();
} catch (IOException e) {
logger.error(e);
}
}
}
3.同样可以使用FileChannel
FileChannel fc= null;
try {
File f= new File("D:\\CentOS-6.5-x86_64-bin-DVD1.iso");
if (f.exists() && f.isFile()){
FileInputStream fis= new FileInputStream(f);
fc= fis.getChannel();
logger.info(fc.size());
}else{
logger.info("file doesn't exist or is not a file");
}
} catch (FileNotFoundException e) {
logger.error(e);
} catch (IOException e) {
logger.error(e);
} finally {
if (null!=fc)){
try{
fc.close();
}catch(IOException e){
logger.error(e);
}
}
}