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



假设我有以下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。相反,我需要创建额外的FileInputStreams 's. Works fine.

在这种特殊情况下,它不会产生损坏的数据,但如果与它们相关的任何地方都有BufferedInputStream,则会产生损坏的数据。

真正的问题是,你到底为什么要这样做?为什么不能使用相同的DataInputStream?

相关内容

  • 没有找到相关文章

最新更新