但是如果要写入blob中的话使用FileOutputStream却是有点儿多余的,因为像你那样写入文件读出来之后同样还是byte数组,所以可以直接使用OutputStream的write(byte[] b, int off, int len)方法,OFF开始标记一般设为0,len偏移量一般设为byte的length大小
Java 文件和byte数组转换/**
* 获得指定文件的byte数组
*/
private byte[] getBytes(String filePath){
byte[] buffer = null
try {
File file = new File(filePath)
FileInputStream fis = new FileInputStream(file)
ByteArrayOutputStream bos = new ByteArrayOutputStream(1000)
byte[] b = new byte[1000]
int n
while ((n = fis.read(b)) != -1) {
bos.write(b, 0, n)
}
fis.close()
bos.close()
buffer = bos.toByteArray()
} catch (FileNotFoundException e) {
e.printStackTrace()
} catch (IOException e) {
e.printStackTrace()
}
return buffer
}
/**
* 根据byte数组,生成文件
*/
public static void getFile(byte[] bfile, String filePath,String fileName) {
BufferedOutputStream bos = null
FileOutputStream fos = null
File file = null
try {
File dir = new File(filePath)
if(!dir.exists()&&dir.isDirectory()){//判断文件目录是否存在
dir.mkdirs()
}
file = new File(filePath+"\\"+fileName)
fos = new FileOutputStream(file)
bos = new BufferedOutputStream(fos)
bos.write(bfile)
} catch (Exception e) {
e.printStackTrace()
} finally {
if (bos != null) {
try {
bos.close()
} catch (IOException e1) {
e1.printStackTrace()
}
}
if (fos != null) {
try {
fos.close()
} catch (IOException e1) {
e1.printStackTrace()
}
}
}
}