java - .txt 文件的大小和磁盘上的大小

标签 java string bit filesize

在记事本中打开一个新文件,并在其中插入不带引号的句子“四分七年前”。

Four              4 characters
score             5 characters
and               3 characters
seven             5 characters 
years             5 characters 
ago               3 characters

总计:25 + 5 个空格 = 30 个字符。

您会发现该文件在磁盘上的大小为 30 字节:每个字符 1 字节。 将文件以名称 gettingSize.txt 保存到磁盘。 然后查看文件的大小。 一般来说,每个字符消耗一个字节。

大小:30 字节
磁盘大小:4.00 KB(4,096 字节)

以下段落是从 pdf 中复制粘贴的。

如果您像计算机一样查看该文件,您会发现每个字节包含的不是字母而是数字——该数字是与该字符对应的 ASCII 代码(见下文)。因此在磁盘上,文件的数字如下所示:

四七

70 111 117 114 32 97 110 100 32 115 101 118 101 110

通过查看 ASCII 表,您可以看到每个字符与所使用的 ASCII 码之间的一一对应关系。请注意使用 32 表示空格——32 是表示空格的 ASCII 代码。如果我们想在技术上正确的话,我们可以将这些十进制数扩展为二进制数(因此 32 = 00100000)——这就是计算机真正处理事物的方式。

1) 我知道所有的东西都是以位和字节的形式存储的,所以这通常意味着什么——“你会发现每个字节包含的不是一个字母而是一个数字——这个数字就是对应于的 ASCII 码人物”。一个字节是8位。那么“每个字节一个数字——数字就是ASCII码”是如何实现的呢?一个字节怎么可能包含 0 和 1 之外的 ASCII 数字(例如 49 代表“1”)?

2) Size 和 Size on Disk 之间到底有什么区别? ASCII 和 Unicode 是如何融入其中的?

3)在Java中,字符串是对象。我可以说它是多个字符连接在一起吗? String str = "四分和七年前" 那么一个str在内存中是如何存储的呢。是不是和记事本文件中保存的方式一样?

最佳答案

文件存储在 block 中。如果文件大小小于 block 大小(在您的情况下为 4KB),则文件将占用所有 block ,但其大部分空间未使用。我认为这个问题已在 SuperUser 上得到回答,我会找到链接。 更新:https://superuser.com/questions/704218/why-is-there-such-a-big-difference-between-size-and-size-on-disk

enter image description here

关于java - .txt 文件的大小和磁盘上的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25718799/

相关文章:

architecture - 为什么位数总是(?)2的幂?

c - 在十六进制数组中写入位

c++ - 将位设置为一个,其中几个值的位都相同?

java - 正则表达式:使用相同模式但不同替换词执行字符串替换

java:8 个皇后使用深度优先搜索

c++ - 查找字符串中是否存在某些字符

php - 突出显示 Div 标签下的文本

java - java中初始化char数组时,如何解决错误未封闭的字 rune 字

Java过滤算法。为什么使用非 volatile 变量?

Java if- else 字符串.contains 不起作用错误