如何获取给定字符串的文件大小?
How do I get the file size of a given string?
如果我们有一个字符串并将该字符串放入一个文本文件中……该文本文件将有一个大小。有没有某种公式可以用来计算大小?我真的需要这样做,因为将字符串转换为文本文件并获取大小然后删除文件是行不通的。
使用 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
}
如果我们有一个字符串并将该字符串放入一个文本文件中……该文本文件将有一个大小。有没有某种公式可以用来计算大小?我真的需要这样做,因为将字符串转换为文本文件并获取大小然后删除文件是行不通的。
使用 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
}