有关FileInputStream读取的Windows和Linux之间的区别是什么?

时间:2013-09-03 05:11:05

标签: java linux windows file fileinputstream

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

FileInputStream fileInputStream = new FileInputStream(file);

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

有什么区别?

2 个答案:

答案 0 :(得分:1)

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

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

我会猜测并说你的文件有两行。在Windows中,它将在每行结束时用\n替换\r\n,创建原始文件中不存在的2个字节。

在Linux中,当读取Windows中生成的文件时,它正好相反,吃了2个字节。

答案 1 :(得分:0)

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

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