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

标签 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 个字符??

最佳答案

那是因为在你的文件中有“Hello World”加上另外两个字符: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();
}

关于java - File.length() 显然报告了错误的文件大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22259186/

相关文章:

c# - 使用 Parallel.for 循环的文件 I/O 问题

java - 如何在java中对硬盘驱动器的文件读/写进行排队?

java - 从 Class<A> 变量访问静态字段

java - 将 Json 映射到 POJO

java - 刷新 RecyclerView 中的数据并保持其滚动位置将用户带到 Activity 的顶部

java - 使用 IOUtils 和 ImageIO 写入图像文件有什么区别

java - 从 Resteasy 服务器返回文件

c - 如何编写从文本文件返回特定行的 ANSI C 用户定义函数?

java - [JAVA]如何创建排名系统并将其保存到.txt 文件?

java - 如何在 Java JDK 1.6 上与 Dropbox 建立 HTTPS 连接?