zoukankan      html  css  js  c++  java
  • java实现文件转换成二进制存储与取出

    一、功能描述:

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

    二、数据库:

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

    [sql] view plaincopy
     
    1. CREATE TABLE `save_image` (  
    2.   `id` int(50) NOT NULL AUTO_INCREMENT,  
    3.   <span style="color:#FF0000;">`images` blob</span>,  
    4.   PRIMARY KEY (`id`)  
    5. )   

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

    [java] view plaincopy
     
    1. public  void save() throws SQLException  
    2. {  
    3.     connection=connectionManager.getconn();//连接数据库的操作,这里自己连接自己的数据库  
    4.       
    5.     try {  
    6.         File file=new File("D:\1.jpg");//要转换的文件  
    7.         FileInputStream inputStream=new FileInputStream(file);  
    8.         String sql="insert into save_image(images) values(?)";//存入数据库的SQL语句在执行的时候一定要用prepareStatement  
    9.         statement=connection.prepareStatement(sql);  
    10.         statement.setBinaryStream(1, inputStream,(int)file.length());  
    11.         statement.executeUpdate();  
    12.           
    13.     } catch (FileNotFoundException e) {  
    14.         // TODO Auto-generated catch block  
    15.         e.printStackTrace();  
    16.     } catch (SQLException e) {  
    17.         // TODO Auto-generated catch block  
    18.         e.printStackTrace();  
    19.     }  
    20.       
    21. }  

    四、取出数据并还原文件到本地的java代码:

    [java] view plaincopy
     
    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.     }  
    16.     try {  
    17.         byte[] Buffer = new byte[4096*5];  
    18.         statement=connection.prepareStatement(sqlString);  
    19.         resultSet = statement.executeQuery();  
    20.         if(resultSet.next())  
    21.         {  
    22.             FileOutputStream outputStream = new FileOutputStream(file);  
    23.             InputStream iStream = resultSet.getBinaryStream("images");//去字段用getBinaryStream()  
    24.             int size=0;  
    25.             while((size=iStream.read(Buffer))!=-1)  
    26.             {  
    27.                 System.out.println(size);  
    28.                 outputStream.write(Buffer,0,size);  
    29.             }  
    30.         }  
    31.     } catch (Exception e) {  
    32.         e.printStackTrace();  
    33.     }  
    34.       
    35. }  
  • 相关阅读:
    SharePoint 2010 + Infopath 2010 VSTA + WF + Timer Job + BI 之 报销单实例系列创建报销单新增视图
    读取 SPFieldChoice 选项类型的三种方法 ,第三种方法目前有问题没有解决,请高手来解决一下
    Ubuntu SVN安装
    Hibernate注解使用以及Spring整合
    性能大提速 MyEclipse终极优化四要点
    MyEclipse运行错误解决办法:The Linux WYSIWYG design panel is still under development
    详细介绍Ubuntu VirtualBox的桥接网络配置
    Log4Net使用指南
    MyEclipse Java Build Path详解
    JSTL 核心标签库 使用
  • 原文地址:https://www.cnblogs.com/henuyuxiang/p/4527731.html
Copyright © 2011-2022 走看看