FileInputStream fileInputStream = new FileInputStream(file);
例如,在windows中,字节长度为1026,但在linux中,字节长度为1024 或者与windows相反,字节长度为1024但在linux中,字节长度为1022,总是在windows中,字节长度大于linux。
有什么区别?
答案 0 :(得分:1)
您检测到的问题可能与Windows与Unix 行结尾有关。
由于您必须以文本模式阅读文件,因此在Windows中,行的结尾由两个符号\r\n
确定(分别以十六进制表示为0x0A
和0x0D
) ,而在Unix系统中,它只使用\n
。
我会猜测并说你的文件有两行。在Windows中,它将在每行结束时用\n
替换\r\n
,创建原始文件中不存在的2个字节。
在Linux中,当读取Windows中生成的文件时,它正好相反,吃了2个字节。
答案 1 :(得分:0)
我的猜测是你正在阅读一个文本文件并且该文件已被转换为使用windows新行\r\n
而不是linux \n
如果您在不进行转换的情况下编写文本或二进制文件,则文件将包含完全相同的字节和完全相同的字节数。