required int但是有一个问题,发现零字节

时间:2011-05-26 06:27:30

标签: java file file-io int long-integer

如何解决这个问题?

    File f=new File("d:/tester.txt");
    long size=f.length();  // returns the size in bytes
    char buff[]=new char[size]; // line of ERROR
                // will not accept long in it's argument
                // I can't do the casting (loss of data)

是否可以使用size作为buff的长度而不会丢失数据?

如果是,我该如何使用它?

我的第二个问题是:

为什么我没有得到实际的字节数?

这是该计划:

import java.io.*;
class tester {
 public static void main(String args[]) {
 File f=new File("c:/windows/system32/drivers/etc/hosts.File");
 long x=f.length();  // returns the number of bytes read from the file
 System.out.println("long-> " + x );
}

}

输出为long-> 0,但显然不是这样。为什么我得到这个结果?

1 个答案:

答案 0 :(得分:3)

您需要将long转换为int

char buff[]=new char[(int) size];

这仅适用于小于2 GB的文件。

但是,如果您打算使用它来阅读文件,或许意味着

byte[] buff=new byte[(int) size];

我会从Apache Commons IO查看FileUtilsIOUtils,它有很多帮助方法。


我怀疑你有一个带有该名字的文件。也许你需要将.File放在最后,听起来像是一个奇怪的扩展。

我先检查f.exists()