Java:在单个FileInputStream上使用多个DataInputStreams

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

假设我有以下Java代码:

        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次,但这在大型数据集上是有效的。也许还有别的方法可以实现我想要的?我无法控制数据文件。