使用Blob对象保存声音文件到数据库,现在省去往数据库中插入数据一步而是将要保存的对象保存在Blob对象这中,然后再从这个Blob对象中取出声音文件保存在硬盘上。实现代码如下:Filefi...
使用Blob对象保存声音文件到数据库,现在省去往数据库中插入数据一步而是将要保存的对象保存在Blob对象这中,然后再从这个Blob对象中取出声音文件保存在硬盘上。实现代码如下:
File finput = new File("e:\\214.mp3");
FileInputStream stream = new FileInputStream(finput);
ByteArrayOutputStream out = new ByteArrayOutputStream(1000);
byte[] b = new byte[1000];
byte[] t=new byte[stream.available()];
int n,k=0;
while ((n = stream.read(b)) != -1) {
out.write(t, k, n);
k += n;
}
out.toByteArray();
stream.close();
out.close();
/*java.sql.Blob*/
Blob blob=new SerialBlob(t);
InputStream inputStream = blob.getBinaryStream();
File foutput=new File("e:\\215.mp3");
FileOutputStream fo = new FileOutputStream(foutput);
int c;
// 读取流并写入到文件中
while ((c = inputStream.read()) != -1) {
fo.write(c);
}
fo.close();
出现问题:保存前的文件和操作后保存在硬盘上的文件大小相同,可是却发生了变化,各位可以用comp e:\214.mp3 e:\215.mp3命令查看一下。我这里的比较结果为:
比较 E:\214.mp3 和 E:\215.mp3...
比较错误于 OFFSET 0
file1= FF
file2 = 0
比较错误于 OFFSET 1
file1= FB
file2 = 0
比较错误于 OFFSET 2
file1= B0
file2 = 0
比较错误于 OFFSET 3
file1= 4
file2 = 0
比较错误于 OFFSET 9
file1= 69
file2 = 0
比较错误于 OFFSET A
file1= 6
file2 = 0
比较错误于 OFFSET 10
file1= D
file2 = 0
比较错误于 OFFSET 11
file1= 20
file2 = 0
比较错误于 OFFSET 12
file1= C0
file2 = 0
比较错误于 OFFSET 17
file1= 1
file2 = 0
10 个不匹配之处 - 退出比较
为何会出现这样的情况。不解中……
展开