本文共 2510 字,大约阅读时间需要 8 分钟。
package com.starry.exersise;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.FileOutputStream;import java.io.InputStream;import java.sql.Blob;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import javax.sql.rowset.serial.SerialBlob;import org.apache.commons.io.IOUtils;import org.junit.Test;/** * 将mysql中的MP3文件复制到本地磁盘中 * * 方法一: * 整体思路 1:新建一个input输入流读取MP3文件内容 * 2:将读取到的mp3文件写入byte数组中 * 3:连接数据库,将文件写入数据库中(数据类型为blob类型) * 方法二: 第三方类库中的方法 * * @author Starry * */public class InputMp3 { //定义需要使用的变量 static Connection con=null;//创建一个连接数据库的对象 static PreparedStatement pst=null;//定义一个向数据库发送sql与语句的对象\ static ResultSet res=null;//定义一个结果集 @Test public void test() throws Exception{ //调用方法1 method1(); //调用方法2 //method2(); } /** * 方法一 * @throws IOException * @throws SQLException */ public void method1() throws Exception{ //创建一个connection对象(后面的是我自己定义的一个工具类,复制不可用) con=MyJDBCUtil.getConnection(); //定义一个sql语句 String sql="select 文件 from table2 where id=1"; //创建一个preparedstatement对象 pst=con.prepareStatement(sql); //获取结果集 res=pst.executeQuery(); //使用while while(res.next()){ Blob b=res.getBlob("文件"); Blob blob=new SerialBlob(b); //创建一个input 来获取blob对象 InputStream ins=blob.getBinaryStream(); //使用buffered 加快速度 BufferedInputStream bis=new BufferedInputStream(ins); //创建一个输出流 写入要复制到的位置 BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream("C:\\新建文件夹 (2)\\copybb.mp3")); //创建一个byte数组 byte[] array=new byte[1024]; int len=0; while((len=bis.read(array))!=-1){ bos.write(array, 0, len); } //关闭流 bis.close(); bos.close(); } } /** * 方法二 * @throws IOException * @throws SQLException */ public void method2() throws Exception{ //创建一个connection对象(后面的是我自己定义的一个工具类,复制不可用) con=MyJDBCUtil.getConnection(); //定义一个sql语句 String sql="select 文件 from table2 where id=1"; //创建一个preparedstatement对象 pst=con.prepareStatement(sql); //获取结果集 res=pst.executeQuery(); //使用while while(res.next()){ Blob b=res.getBlob("文件"); Blob blob=new SerialBlob(b); //创建一个input 来获取blob对象 InputStream ins=blob.getBinaryStream(); //使用buffered 加快速度 BufferedInputStream bis=new BufferedInputStream(ins); //创建一个输出流 写入要复制到的位置 BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream("C:\\新建文件夹 (2)\\copybb.mp3")); //第三方类库的形式 int result = IOUtils.copy(bis, bos); System.out.println("copy了多少字节?" + result); } }}
starry.每天进步一点点。
转载地址:http://esxvi.baihongyu.com/