0

例如,文件大小为 1024 字节,在 windows 和 linux 中大小相同。但是当我阅读下面的文件时

FileInputStream fileInputStream = new FileInputStream(file);

例如,在 windows 中,字节长度为 1026,但在 linux 中,字节长度为 1024,或者与此相反,在 windows 中,字节长度为 1024,但在 linux 中,字节长度始终为 1022,在 windows 中字节长度大于 linux。

有什么区别?

4

2 回答 2

1

我的猜测是您正在阅读一个文本文件,并且该文件已被转换为使用 windows 新行而\r\n不是 linux\n

如果您编写文本或二进制文件而不进行转换,则文件将包含完全相同的字节和完全相同的字节数。

于 2013-09-03T05:21:47.603 回答
1

您检测到的问题可能与 Windows 与 Unix行尾有关。

由于您必须以文本模式读取文件,因此在 Windows 中,行尾由两个符号确定\r\n(分别以十六进制表示为0x0A0x0D),而在 Unix 系统中,它仅使用\n.

我会做出一个疯狂的猜测,并说你的文件有两行。在 Windows 中,它将在每一行末尾替换\n\r\n,创建原始文件中不存在的 2 个字节。

而在 Linux 中,当读取在 Windows 中生成的文件时,它会做相反的事情,吃掉 2 个字节。

于 2013-09-03T05:21:48.307 回答