java实现文件转换成二进制存储与取出

一、功能描述:

将文件转成二进制数据放入数据库中,需要的时候,便可以取出安装与使用。


二、数据库:

建立一个数据库字段存放转成二进制的图片,这个字段有一个要求就是要设置成blob类型的

  1. CREATE TABLE `save_image` (
  2. `id` int( 50) NOT NULL AUTO_INCREMENT,
  3. `images` blob,
  4. PRIMARY KEY ( `id`)
  5. )

三、转换文件成为二进制数据并保存的Java代码:

  1. public void save() throws SQLException
  2. {
  3. connection=connectionManager.getconn(); //连接数据库的操作,这里自己连接自己的数据库
  4. try {
  5. File file= new File( "D:\\1.jpg"); //要转换的文件
  6. FileInputStream inputStream= new FileInputStream(file);
  7. String sql= "insert into save_image(images) values(?)"; //存入数据库的SQL语句在执行的时候一定要用prepareStatement
  8. statement=connection.prepareStatement(sql);
  9. statement.setBinaryStream( 1, inputStream,( int)file.length());
  10. statement.executeUpdate();
  11. } catch (FileNotFoundException e) {
  12. // TODO Auto-generated catch block
  13. e.printStackTrace();
  14. } catch (SQLException e) {
  15. // TODO Auto-generated catch block
  16. e.printStackTrace();
  17. }
  18. }
四、取出数据并还原文件到本地的java代码:
  1. //读取数据库二进制文件
  2. public void readerJpg() throws SQLException
  3. {
  4. connection=connectionManager.getconn(); //自己连接自己的数据库!!!!!!!!
  5. String sqlString= "select images from save_image where id=4"; //从数据库中读出要还原文件的二进制码,这里我读的是自己的数据库id为4的文件
  6. File file= new File( "E:\\1.jpg"); //本地生成的文件
  7. if(!file.exists())
  8. {
  9. try {
  10. file.createNewFile();
  11. } catch (Exception e) {
  12. e.printStackTrace();
  13. }
  14. }
  15. try {
  16. byte[] Buffer = new byte[ 4096* 5];
  17. statement=connection.prepareStatement(sqlString);
  18. resultSet = statement.executeQuery();
  19. if(resultSet.next())
  20. {
  21. FileOutputStream outputStream = new FileOutputStream(file);
  22. InputStream iStream = resultSet.getBinaryStream( "images"); //去字段用getBinaryStream()
  23. int size= 0;
  24. while((size=iStream.read(Buffer))!=- 1)
  25. {
  26. System.out.println(size);
  27. outputStream.write(Buffer, 0,size);
  28. }
  29. }
  30. } catch (Exception e) {
  31. e.printStackTrace();
  32. }
  33. }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值