如何从字符串中确定文件的大小

Posted

技术标签:

【中文标题】如何从字符串中确定文件的大小【英文标题】:How to determine the size of a file from the strings 【发布时间】:2018-11-15 00:55:42 【问题描述】:

我有一个名为 text.txt 的测试文件。其内容:

as
bq

df

但是 text.txt 的文件大小是 12 字节。为什么是 12 个字节?第一行有 3 个字节 as\n。第二行有 3 个字节 bq\n。第三行是 1 个字节 \n。第四行是3字节dfEOF

3 + 3 + 1 + 3 = 10 bytes

但是当我检查文件的大小时,它显示的是 12 个字节。如果我的 txt 中只有一个字符。它说1个字节。所以我对如何获得 12 个字节感到困惑

我的一个记事本++按右箭头键的 GIF。向您展示没有空格空格: https://gyazo.com/82717bd0e339188adae3d72dc243ba37

我的十六进制:61 73 0d 0a 62 71 0d 0a 0d 0a 64 66

【问题讨论】:

@tod 我检查了空格并确保没有空格。我什至做了一个CTRL+F 来寻找空间。在您的计算机上自己尝试一下 使用十六进制编辑器/查看器检查文件内容,您将得到答案。您认为为空的行很可能实际上不是。或者有额外的空白字符,或者你以某种方式在文件上得到了一个字节顺序标记。 您确定您的EOLN 字符是\n 而不是\r\n? (可能)也没有 EOF 标记。这样就剩下 3 个字节了,并且有 3 行带有 EOLN。您可以使用二进制编辑器吗? @Kingsley 我只有记事本++ Windows 使用 2 个字符作为行尾。所以也许不是as\n,而是as\r\n。 (请注意,如果您在代码中以文本模式读取文件,stdio 函数将在将内容传递给您的代码之前删除 \r) 【参考方案1】:

鉴于内容是

My hex: 61 73 0d 0a 62 71 0d 0a 0d 0a 64 66

你的 12 个字节是

61 73  <- this is 'as'
0d 0a  <- CR-LF newline characters
62 71  <- this is 'bq'
0d 0a  <- CR-LF
0d 0a  <- CR-LF for empty line
64 66  <- `df`

这是 12。请注意,您的最后一行没有 CR-LF 对。

【讨论】:

4 + 4 + 2 + 2 实际上等于 12,我认为这些家伙在这里做点什么! 也许你可以添加 CR 和 LF 代表什么。

以上是关于如何从字符串中确定文件的大小的主要内容,如果未能解决你的问题,请参考以下文章

如何确定空格中的制表符字符大小? [关闭]

如何在 Java 中将句子存储在临时数组中?

如何从 Java 中的 MIME 类型确定适当的文件扩展名

从文件逐字读取并确定换行 C++

如何在 Python 中确定“单词”的大小

如何确定一个进程的“虚拟大小”(WinXP)?