Java:在单个FileInputStream上使用多个DataInputStreams
假设我有以下Java代码:Java:在单个FileInputStream上使用多个DataInputStreams,java,datainputstream,Java,Datainputstream,假设我有以下Java代码: FileInputStream fin = new FileInputStream(filename); DataInputStream x = new DataInputStream(fin); DataInputStream y = new DataInputStream(fin); DataInputStream z = new DataInputStream(fin); 我想使用y.skip(1
FileInputStream fin = new FileInputStream(filename);
DataInputStream x = new DataInputStream(fin);
DataInputStream y = new DataInputStream(fin);
DataInputStream z = new DataInputStream(fin);
我想使用y.skip(100)
和z.skip(200)
从文件的不同位置同时读取数据。这样行吗?我现在有EOF错误
编辑
我确实尝试了以下代码:
FileInputStream fin1 = new FileInputStream(filename);
FileInputStream fin2 = new FileInputStream(filename);
FileInputStream fin3 = new FileInputStream(filename);
DataInputStream x = new DataInputStream(fin1);
DataInputStream y = new DataInputStream(fin2);
DataInputStream z = new DataInputStream(fin3);
这不会产生EOF错误,但仍然不确定这是否会返回损坏的数据?..我似乎找到了解决方案。原始文件不起作用,因为它只是每次递增文件指针,而不管使用的是
DataInputStream
。相反,我需要创建额外的文件输入流。工作正常。在这种特定情况下,它不会产生损坏的数据,但如果在与它们相关的任何地方都有一个BufferedInputStream
,它就会产生损坏的数据
真正的问题是你到底为什么要这么做?为什么不能使用相同的数据输入流?
我有一个包含3d矢量场数据的旧数据文件。首先存储所有x值,然后存储所有y值,然后存储所有z值,即数据不会每次读取为(x,y,z)。我可以将数据分别循环3次,但这在大型数据集上是有效的。也许还有别的方法可以实现我想要的?我无法控制数据文件。