改寫的時候,遇到 java.io.IOException: Bad file descriptor 錯誤,
發現是因為InputStream沒有好好處理完就做close()了,
針對緩衝部分還是要注意一下
File thisFile= new File("file's src ");
/*
1. use Files.newInputStream()
Opens a file, returning an input stream to read from the file.
The stream will not be buffered, and is not required to support the mark or reset methods.
*/
InputStream is = Files.newInputStream(thisFile.toPath());
/*
2. get byte[]
*/
File thisFile= new File("file's src ");
InputStream thisFileIs = null;
try{
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
thisFileIs = new FileInputStream(thisFile);
byte[] thisFileIsByte = new byte[1024];
int len = 0;
while ((len = thisFileIs .read(thisFileIsByte )) != -1) {
outStream.write(thisFileIsByte , 0, len);
}
byte[] in_b = outStream.toByteArray();
}catch(IOException e){
} finally {
if(thisFileIs != null) {
try{
thisFileIs.close();
}catch(IOException e) {
}
}
}
上述等同
InputStream thisFileIs = null;
try{
thisFileIs = new FileInputStream(thisFile);
byte[] in_b = IOUtils.toByteArray(new FileInputStream(thisFile)); //這行
}catch(IOException e){
} finally {
if(thisFileIs != null) {
try{
thisFileIs.close();
}catch(IOException e) {
}
}
}
參考:https://docs.oracle.com/javase/8/docs/api/java/nio/file/Files.html
文章標籤
全站熱搜
