我正在编写使用文件Stream的代码,像这样
public static void writeBlock(OutputStream stream, float[] data, byte startPosition)
{
int i = 0;
for(i = startPosition; i < data.length; i++)
{
// Code
stream.flush();
stream.write(someByte); // throws Exception at second call
if(someCondition)
{
break;
}
}
stream.flush();
if(i < data.length)
{
writeBlock(stream, data, i)
}
}
我收到IOExceptions
消息:Bad file descriptor
该方法获得FileOutputStream
。
但如果第一次工作,文件描述符怎么会坏。 我的问题在哪里? 感谢您的帮助
答案 0 :(得分:1)
flush()
取决于正在使用的OutputStream的实现。此方法的抽象OutputStream类实现不执行任何操作。如果OutputStream子类永远不会缓冲输出,则很可能不会实现此方法,flush()
将不执行任何操作。即使flush()
为没有缓冲输出的传递实现做了某些事情,也很可能只是立即返回。
传递给OutputStream的文件有问题。需要更多信息来确定问题所在。
答案 1 :(得分:0)
我自己想出来了
我在写入stream
的方法中打开了另一个Stream(BitOutputStream),然后关闭了这个bitStream。
public static void writeBlock(OutputStream stream, float[] data, byte startPosition)
{
int i = 0;
//Bitstream bitstream init
for(i = startPosition; i < data.length; i++)
{
// Code
stream.flush();
stream.write(someByte); // throws Exception at second call
if(someCondition)
{
break;
}
}
bitstream.close();
stream.flush();
if(i < data.length)
{
writeBlock(stream, data, i)
}
}
删除该行(bistream.close()
)后,它有效。