IOException: write failed: EBADF (Bad file number).日志含义<



我读了很多关于EBADF的帖子,但没有一个能解决我的问题。

所以我正在做的是将。jpg格式转换为字节最后我想把字节写入二进制文件。

这是我的代码。

public static void writeBytes(byte[] bytes,String dstPath){
FileOutputStream fout = null;
BufferedOutputStream bout = null;
try {
fout = new FileOutputStream(dstPath);
bout = new BufferedOutputStream(fout);
bout.write(bytes);
} catch (IOException io) {

} finally {
try {
if (fout != null)
fout.close();
if (bout != null)
bout.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}

问题发生在调用布特。write(bytes)时。

我想我找到问题了。

(BufferedOutputStream)中的缓冲区大小默认为8192,而我的字节大小小于它。所以我像下面这样修改代码。

public static void writeBytes(byte[] bytes,String dstPath){
FileOutputStream fout = null;
BufferedOutputStream bout = null;

int bufferSize = 8192;
if(bytes.length < bufferSize){
bufferSize = bytes.length;
}
try{
fout=new FileOutputStream(dstPath);
bout=new BufferedOutputStream(fout,bufferSize);
bout.write(bytes);
}catch (IOException io){

}finally {
try {
fout.close();
bout.close();
} catch (IOException e) {

e.printStackTrace();
}
}
}

i设置缓冲区大小等于这个条件的字节大小。

int bufferSize = 8192;
if(bytes.length < bufferSize){
bufferSize = bytes.length;
}

并设置缓冲区大小为BufferedOutputStream

bout=new BufferedOutputStream(fout,bufferSize);

我不确定这是标准的方式,但对我来说是有效的。

相关内容

  • 没有找到相关文章

最新更新