![](/img/trans.png)
[英]Why Java OutputStream.write() Takes Integer but Writes Bytes
[英]Java OutputStream.write() throws Bad file descriptor but flush works
我正在编写使用像这样的可逆文件流的代码
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
。
但是,如果文件描述符第一次起作用,怎么会变坏。 我的问题在哪里? 谢谢您的帮助
flush()
取决于所使用的OutputStream的实现。 此方法的抽象OutputStream类实现不执行任何操作。 如果OutputStream子类从不缓冲输出,则很可能不会实现此方法,并且flush()
将不执行任何操作。 即使没有缓冲输出,即使flush()
对通过的实现做了一些操作,它也很可能立即返回。
传递给OutputStream的文件有问题。 需要更多信息来找出问题所在。
我自己弄清楚了
我在写入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()
)之后,它开始工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.