如何从字符串中确定文件的大小
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 代表什么。以上是关于如何从字符串中确定文件的大小的主要内容,如果未能解决你的问题,请参考以下文章