簡體   English   中英

Java OutputStream.write()拋出錯誤的文件描述符,但刷新正常

[英]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)
   }
}

我收到消息IOExceptionsBad 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM