FileInputStream input;
byte[] buffer = new byte[1024 * 1024]; try {
input = new FileInputStream(fileName);
int len = input.read(buffer, 0, buffer.length);

} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
读文件的代码如上,如果用buffer.length返回的是1024*1024=1048576,这个是byte[]数组的所有字节数。我想得到文件在byte[]里实际占用的字节数(也就是文件的大小)

解决方案 »

  1.   

    用FileInputStream的未必精确,建议用:
      int len = new File(fileName).length();
      

  2.   

    int len = input.read(buffer, 0, buffer.length);如果 文件大小 小于 buffer.length 的话 len 的值就是文件的实际大小,也就是byte[]数组中实际占用的字节数如果文件大小 大于 buffer.length 的话你需要多次读取才行,一直到 len < buffer.length 才读完
    byte[] buf = new byte[1024*1024];
    FileInputStream fis = new FileInputStream("c:\\test.db");

    int totalLen = 0; //文件总大小
    int len = 0;
    while((len = fis.read(buf)) == buf.length){
    totalLen += buf.length;
    }
    totalLen += len;
    不过你如果想读文件大小何必怎么麻烦
    input = new FileInputStream(fileName);
    int len = input.available(); 这句话就获取文件大小了
      

  3.   

    能不能得到byte[]里实际有多少字节,也就是文件占了多少字节,也就是文件的大小。我这个程序是别人开发的,在一个类里将文件读到byte[],并作为参数传到另一个类。我想在后一个类里得到byte[]里的实际字节数。所以不能用int len = input.available();的方法。而且也不想把len作为参数传给第二个类,那样改动太大
      

  4.   

    那你只有把byte[]重新定义大小再传
    FileInputStream input;byte[] buffer = null;
            try {
                int fileLen = 0;
                fileLen = input.available();
                buffer = new byte[fileLen]; //buffer的大小就是文件的大小
                input = new FileInputStream(fileName);
                int len = input.read(buffer);            
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
      

  5.   

    那个read不是都返回了len嘛。看看doc吧。
      

  6.   

    http://topic.csdn.net/u/20120816/17/963e96cd-4476-41c4-88fb-b7a1d2a958ba.html