方式一:public byte [] readBytes(String filePath) {
byte [] bt = null;
FileInputStream fis = null;
try {
fis = new FileInputStream(filePath);
bt = new byte[fis.available()];
fis.read(bt);
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
return bt;
}
方式二:public byte [] readBytes(String filePath) {
byte [] bt = null;
FileInputStream fis = null;
try {
fis = new FileInputStream(filePath);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bt = new byte [1024];
while (fis.read(bt) != -1) {
baos.write(bt);
}
baos.close();
fis.close();
bt = baos.toByteArray();
} catch (IOException e) {
e.printStackTrace();
}
return bt;
}请问这两种方式那种更好,是否与文件大小有关?

解决方案 »

  1.   

    第一个是常用 不过你不觉得 你没写finally很危险吗
    异常后 你的流怎么关掉
      

  2.   

    呵呵,随手写了个demo,偷了一下懒
      

  3.   

    .available()
    只取流中可用的数据,并不是全部的数据,具体你可以去看api。所以第一种会留下很大的隐患。
    第二种常用,读一段写一段。但是文件很大会把jvm内存爆掉,到时候就outofmemory了。另外你的close最好都写在finally里面,