如何获取给定字符串的文件大小?

问题描述

如果我们有一个字符串,然后将该字符串放入文本文件中,则该文本文件将具有一个大小。是否可以使用某种公式来计算尺寸?我真的需要这样做,因为将字符串转换为文本文件获取大小然后删除文件不起作用。

解决方法

使用java.nio.Files的示例:

public static long getStringSize(String str) throws IOException {
    Path file = Path.of("niofiles.txt");
    Files.writeString(file,str,StandardOpenOption.CREATE_NEW);
    long size = Files.size(file);
    Files.deleteIfExists(file); // cleanup
    return size;
}

使用java.io.File的示例:

public static long getStringSizeFile(String str) throws IOException {
    File file = new File("iofile.txt");
    try (BufferedWriter bw = new BufferedWriter(new FileWriter(file))) {
        bw.write(str);
    }
        
    long size = file.length();
    file.delete(); // cleanup
    return size;
}

使用字节数组长度的更简单示例:

public static int stringSize(String str) {
    return str.getBytes().length;
}
,

您只需要计算存储字符串所需的bytes,因为一个字符可能占用一个以上的字节。

当您向文件中写入n个字节时,该文件将恰好具有此字节数。请使用String.getBytes()进行计算。

public static void main(String... args) {
    String str = "endereço";
    System.out.println(str.length());                            // 8
    System.out.println(str.getBytes(StandardCharsets.UTF_8));    // 9
}