File.length()显然报告错误的文件大小

时间:2014-03-07 19:39:05

标签: java file-io

我正在我的java代码中获取一个文本文件并试图找出它的长度。我已将文件存储在记事本中,编码类型为ANSI

public static void main(String[] args) throws IOException {

    File file = new File("test.txt");
    // creates the file

    double len=file.length();
    System.out.println(len);
}

支持test.txt我已经

你好世界。 而不是12它显示14 ..为什么2个额外的chacter ??

1 个答案:

答案 0 :(得分:6)

那是因为在你的文件中你有“Hello World”PLUS另外两个字符:0x13和0x10,这些标记为“新行”和“回车”。

只是为了证明这一点,修改你的代码以便逐字节地显示你的文件,你会看到:

public static void main(String[] args) throws IOException {

    File file = new File("test.txt");
    // creates the file

    long len=file.length();
    System.out.println(len);


    // byte by byte:
    FileInputStream fileStream = new FileInputStream(file);
    byte[] buffer = new byte[2048];
    int read;
    while((read = fileStream.read(buffer)) != -1) {
        for(int index = 0; index < read; index++) {
            byte ch = buffer[index];
            if(buffer[index] < 0x20) {
                System.out.format(">> char: N/A, hex: %02X%n", ch);
            } else {
                System.out.format(">> char: '%c', hex: %02X%n", (char) ch, ch);
            }
        }
    }
    fileStream.close();
}