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/

相关文章:

java - Selenium Firefox - WebDriverException : Reached error page: about:certerror

java - 在开始 eclipse 时弹出

java - 读取文件时,我尝试将每一行存储到相关的LinkedList中,但是无法读取第一个字符。这怎么样?

java - 跳到.txt文件中的特定行,其中Java中所有行的长度均相等

java - 通过ObjectInputStream读取对象会引发EOF异常

java - 如何使用 BundleContext 从包 list 中获取属性值?

java - netty-tcnative 没有在 jdk.tls.disabledAlgorithms 中选择配置

c# - 分割多任务Java的排列

python - 将读取的文件放在目录中

c++ - 用 C++ 读取文本文件最优雅的方法是什么?