• java常用功能


    1.复制文件

        private void fileChannelCopy(File source, File target) throws IOException {
            FileInputStream fi = null;
            FileOutputStream fo = null;
            FileChannel in = null;
            FileChannel out = null;
            
            try {
                fi = new FileInputStream(source);
                fo = new FileOutputStream(target);
                in = fi.getChannel();
                out = fo.getChannel();
                in.transferTo(0, in.size(), out);
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                try {
                     fi.close();
                     in.close();
                     fo.close();
                     out.close();
                } catch (IOException e) {
                    LOGGER.error("File copy failed.", e);
                }      
            }
        }

     2. restApi 显示图片

        @GET
        @Path("/")
        @Produces("image/*")public StreamingOutput getImage(final @QueryParam("path") String path) throws IOException {
        
            LOGGER.debug("source:" + path);
            
            return new StreamingOutput() {
                
                @Override
                public void write(OutputStream output) throws IOException, 
                    WebApplicationException {
                    try (
                            InputStream in = storage.getDocument(path)) {
                            output.write(IOUtils.readBytesFromStream(in));
                        } catch (final FileNotFoundException ex) {
                            LOGGER.error("file is not founded.", ex);
                            throw new NotFoundException();
                        }
                    
                }
            };
        }
    public class StorageUtil {
        private final File folder = new File("/macc/img");
        
        public StorageUtil() throws IOException {
            if (!folder.exists() && !folder.mkdirs()) {
                throw new IOException("Unable to initialize FS storage:" + folder.getAbsolutePath());
            }
            
            if (!folder.isDirectory() || !folder.canWrite() || !folder.canRead()) {
                throw new IOException("Unable to access FS storage:" + folder.getAbsolutePath());
            }        
        }
        
        public void addDocument(final String name, final byte[] content) throws IOException {
            try (InputStream in = new ByteArrayInputStream(content)) {
                addDocument(name, in);
            }
        }
        
        public void addDocument(final String name, final InputStream in) throws IOException { 
            final File f = new File(folder, name);
            
            if (f.exists() && !f.delete()) {
                throw new IOException("Unable to delete FS file:" + f.getAbsolutePath());
            } 
            
            try (OutputStream out = new BufferedOutputStream(new FileOutputStream(f))) {
                out.write(IOUtils.readBytesFromStream(in));
                
                f.deleteOnExit();
            }
        }
        
        public InputStream getDocument(final String name) throws IOException {
            String path = folder + "/" + name;
            final File f = new File(path);
            
            if (!f.exists() || !f.isFile()) {
                throw new FileNotFoundException("Unable to access FS file:" + f.getAbsolutePath());
            }
            
            return new FileInputStream(f);
        }
        
        public void deleteAll() throws IOException {
            for (final File f: folder.listFiles()) {
                if (!f.delete()) {
                    throw new IOException("Unable to delete FS file:" + f.getAbsolutePath());
                }
            }
        }
    }

    3.上传图片-表单模式

        @POST
        @Consumes("multipart/form-data")
        @Path("/upload")
        public Response uploadFileByForm(@Context
                HttpServletRequest imgRequest,
                @Multipart(value="name",type="text/plain")String name,
                @Multipart(value="file")Attachment image) {
              
            DataHandler dh = image.getDataHandler();  
      
            try {  
                InputStream ins = dh.getInputStream();  
                writeToFile(ins, "/macc/img/" + dh.getName());  
            } catch (Exception e) {  
                LOGGER.error("upload failed.", e);
            }  
      
            return Response.ok().entity("ok").build();  
        }

    4.图片上传-二进制流模式

        @POST
        @Consumes(MediaType.APPLICATION_OCTET_STREAM)
        @ModuleSecurityAuth(moduleId=ModuleId.PLAN ,privilegeOperation=PrivilegeOperation.WRITE)
        @Path("/uploadstream")
        public UploadFileRsp uploadFile(@Context
                HttpServletRequest imgRequest) {
            UploadFileRsp response =new UploadFileRsp();
            try {  
                InputStream ins = imgRequest.getInputStream();
                Integer groupId = Integer.parseInt(imgRequest.getParameter("group_id"));
                String name = imgRequest.getParameter("name");
                BufferedImage bi =ImageIO.read(ins); 
                int height = bi.getHeight();
                int width = bi.getWidth();
                String storeName = getStoreName(groupId);
                String path = tenantId() + "/" + storeName;
                File out = new File(PLAN_PICTURE_PATH + path);
                
                //没有文件夹则创建
                if(!out.getParentFile().exists())
                    out.getParentFile().mkdirs();
                
                ImageIO.write(bi, getSuffix(name), out);
                pictureService.bindPicture2Floor(path, name, tenantId(), userId(), groupId, width, height);
                response.setHeight(height);
                response.setPath(path);
                response.setWidth(width);
            } catch (Exception e) {  
                LOGGER.error("upload failed.", e);
                response.buildCode(RestCode.PICTURE_UPLOAD_ERROR);
            }  
      
            return response;
        }
  • 相关阅读:
    Linux 下 MQ 的安装
    云计算的三种服务模式:IaaS,PaaS和SaaS
    Mac下安装Maven
    JDK Mac 安装
    Mac OS 终端利器 iTerm2
    单元测试用例规范
    boolean 属性的定义规范
    2019-12-9号 终于入职 阿里巴巴
    远程调试方法
    系统提测及上线规范(系统上线必读!)
  • 原文地址:https://www.cnblogs.com/guochunyi/p/5168544.html
Copyright © 2020-2023  润新知