![](/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.