/** * 根据byte数组,生成文件 * @param bfile 文件数组 * @param filePath 文件存放路径 * @param fileName 文件名称 */ public static void byte2File(byte[] byte,String filePath,String fileName){ BufferedOutputStream bos=null; FileOutputStream fos=null; File file=null; try{ File dir=new File(filePath); if(!dir.exists() && !dir.isDirectory()){//判断文件目录是否存在 dir.mkdirs(); } file=new File(filePath+fileName); fos=new FileOutputStream(file); bos=new BufferedOutputStream(fos); bos.write(byte); } catch(Exception e){ System.out.println(e.getMessage()); e.printStackTrace(); } finally{ try{ if(bos != null){ bos.close(); } if(fos != null){ fos.close(); } } catch(Exception e){ System.out.println(e.getMessage()); e.printStackTrace(); } } } /** * 获得指定文件的byte数组 * @param filePath 文件绝对路径 * @return */ public static byte[] file2Byte(String filePath){ ByteArrayOutputStream bos=null; BufferedInputStream in=null; try{ File file=new File(filePath); if(!file.exists()){ throw new FileNotFoundException("file not exists"); } bos=new ByteArrayOutputStream((int)file.length()); in=new BufferedInputStream(new FileInputStream(file)); int buf_size=1024; byte[] buffer=new byte[buf_size]; int len=0; while(-1 != (len=in.read(buffer,0,buf_size))){ bos.write(buffer,0,len); } return bos.toByteArray(); } catch(Exception e){ System.out.println(e.getMessage()); e.printStackTrace(); return null; } finally{ try{ if(in!=null){ in.close(); } if(bos!=null){ bos.close(); } } catch(Exception e){ System.out.println(e.getMessage()); e.printStackTrace(); } } }
//字符串转换成数组 public static byte[] toByteArray(String hexString) { hexString = hexString.toLowerCase(); final byte[] byteArray = new byte[hexString.length() / 2]; int k = 0; for (int i = 0; i < byteArray.length; i++) {// 因为是16进制,最多只会占用4位,转换成字节需要两个16进制的字符,高位在先 byte high = (byte) (Character.digit(hexString.charAt(k), 16) & 0xff); byte low = (byte) (Character.digit(hexString.charAt(k + 1), 16) & 0xff); byteArray[i] = (byte) (high << 4 | low); k += 2; } return byteArray; }
/** * 字符串转换成字节流并输出 * */ public void file(HttpServletResponse response,String xx){ byte[] bytes = CommonUtil.toByteArray(xx); OutputStream os = null; try { os = response.getOutputStream(); response.addHeader("Content-Type", "image/jpeg"); os.write(bytes); os.flush(); }catch (Exception e){ e.printStackTrace(); }finally { if (os != null) { try { os.close(); } catch (IOException e) { e.printStackTrace(); } } } }