mp3引入mysql_把MP3保存到数据库中

使用JdbcUtils得到连接con

java.sql包下的Interface Blob----其实现类SerialBlob

Blob是一个可以存储二进制文件的容器。

BLOB常常是数据库中用来存储二进制文件的字段类型。

MySQL中,BLOB是个类型系列,包括TinyBlob,Blob,MediumBlob,LongBlob,这几个类型之间的唯一区别是在存储文件的最大 大小上不同。

类型   大小(单位:字节)

TinyBlob 最大  255

Blob 最大  65k

MediumBlob  中等 16M

LongBlob 最大 4G

所需数据库结构

9a43474ef07d801b353effe62fbac9e8.png

1 //把MP3保存到数据库中

2 @Test3 public void fun() throwsException{4 Connection con=JdbcUtils.getConnection();5 String sql="insert into tab_bin values(?,?,?)";6 PreparedStatement pstmt=con.prepareStatement(sql);7 pstmt.setInt(1, 1);8 pstmt.setString(2, "Circus.mp3");9 //需要得到blob

10 /*1.我们有的是文件,目标是Blob11 * 2.先把文件变成byte[]12 * 3.再使用byte[]创建Blob13 **/

14 //把文件转换成byte[]

15 byte[] bytes=IOUtils.toByteArray(new FileInputStream("F:/CloudMusic/Circus.mp3"));16

17 Blob blob=newSerialBlob(bytes);18 //设置参数

19 pstmt.setBlob(3, blob);20

21 pstmt.executeUpdate();22 }

从数据库中读MP3数据,然后写到磁盘中

1 @Test2 public void fun2() throwsException{3 Connection con=JdbcUtils.getConnection();4 System.out.println(con);5 String sql="select * from tab_bin where filename=?";6 PreparedStatement pstmt=con.prepareStatement(sql);7 pstmt.setString(1, "Circus.mp3");8 ResultSet rs=pstmt.executeQuery();9 System.out.println("查询成功");10 //获取rs中的名为data的数据----数据库中的名

11 if(rs.next()){12 Blob blob=rs.getBlob("data");13 /*把Blob变成硬盘上的文件14 *15 * 1.通过Blob得到输入流对象16 * 2.自己创建输出流对象17 * 3.把输入流的数据写入到输出流中18 **/

19 InputStream in=blob.getBinaryStream();//读20 //写

21 OutputStream out=new FileOutputStream("G:/金泰妍1.MP3");22 IOUtils.copy(in, out);23 }

IOUtils是一个类---封装了IO操作的相关类----提供了对流的操作

常用方法

copy这个方法可以拷贝流

copy(inputstream,outputstream)

copy(inputstream,writer)

copy(inputstream,writer,encoding)

copy(reader,outputstream)

copy(reader,writer)

copy(reader,writer,encoding)

copyLarge这个方法适合拷贝大的数据流,比如2G以上。

copyLarge(reader,writer) 默认会用1024*4的buffer来读取

copyLarge(reader,writer,buffer)

read从一个流中读取数据

read(inputstream,byte[])

read(inputstream,byte[],offset,length)//offset是buffer的偏移值,length是读取的长度

read(reader,char[])

read(reader,char[],offset,length)

等等方法,见IOUtils类

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值