博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用java将数据库文件复制到本地磁盘中
阅读量:4136 次
发布时间:2019-05-25

本文共 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/

你可能感兴趣的文章
Pentaho BI开源报表系统
查看>>
Pentaho 开发: 在eclipse中构建Pentaho BI Server工程
查看>>
JSP的内置对象及方法
查看>>
android中SharedPreferences的简单例子
查看>>
android中使用TextView来显示某个网址的内容,使用<ScrollView>来生成下拉列表框
查看>>
andorid里关于wifi的分析
查看>>
Spring MVC和Struts2的比较
查看>>
Hibernate和IBatis对比
查看>>
Spring MVC 教程,快速入门,深入分析
查看>>
26句实用的英语
查看>>
堆栈,堆栈,堆和栈的区别
查看>>
有创业及野心的一定要看
查看>>
framebuffer驱动全篇
查看>>
手把手教你玩转ARP包
查看>>
windows驱动ddk环境设置
查看>>
基于IMD的包过滤防火墙原理与实现
查看>>
首次编译安装测试passthru
查看>>
Wireshark图解教程(简介、抓包、过滤器)
查看>>
基于PassThru的NDIS中间层驱动程序扩展
查看>>
NDIS_PACKET结构讨论
查看>>