假设我有以下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?