Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 什么';windows和linux在FileInputStream读取方面的区别是什么?_Java_Linux_Windows_File_Fileinputstream - Fatal编程技术网

Java 什么';windows和linux在FileInputStream读取方面的区别是什么?

Java 什么';windows和linux在FileInputStream读取方面的区别是什么?,java,linux,windows,file,fileinputstream,Java,Linux,Windows,File,Fileinputstream,例如,文件大小为1024字节,在windows和linux中大小相同。 但是当我读到下面的文件时 FileInputStream fileInputStream = new FileInputStream(file); 例如,在windows中,字节长度是1026,但在linux中,字节长度是1024 或者与此相反,在windows中,字节长度是1024,但在linux中,字节长度是1022。在windows中,字节长度总是大于linux中的字节长度 有什么区别?我猜您正在阅读一个文本文件,该

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

FileInputStream fileInputStream = new FileInputStream(file);
例如,在windows中,字节长度是1026,但在linux中,字节长度是1024 或者与此相反,在windows中,字节长度是1024,但在linux中,字节长度是1022。在windows中,字节长度总是大于linux中的字节长度


有什么区别?

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


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

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

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

我猜一下,你的档案有两行。在Windows中,它将在每一行尾用
\r\n
替换
\n
,从而创建原始文件中不存在的2个字节


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

我认为差异更多地与文件系统有关,而不是操作系统。“wondows”?这是一个奇怪的一致性打字错误。但是,当我在linux中解析一个由windows文件系统生成的文件时,如何解析该文件,然后获得axact原始文件?没有丢失\r\n..您必须以二进制模式读取它。但我不是Java程序员,所以我不确定如何在Java中实现。FileInputStream是二进制模式,问题是当您在Windows和Linux之间传输文件时,文件已被转换。在传输时,文件未被转换。