zoukankan      html  css  js  c++  java
  • FastDFS java 辅助类

      

    package cn.saiz.drkms.task.crack.utils;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    import org.csource.common.NameValuePair;
    import org.csource.fastdfs.ClientGlobal;
    import org.csource.fastdfs.FileInfo;
    import org.csource.fastdfs.StorageClient;
    import org.csource.fastdfs.StorageClient1;
    import org.csource.fastdfs.StorageServer;
    import org.csource.fastdfs.TrackerClient;
    import org.csource.fastdfs.TrackerServer;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    
    public class FastDFSUtil {
    
        public static Logger log = LoggerFactory.getLogger(FastDFSUtil.class);
    
        static {
            try {
                String path = System.getProperty("user.dir") + "/fdfs_client.conf";
                File file  = new File(path);
                if(file == null || !file.exists()){
                    path = FastDFSUtil.class.getClassLoader()
                            .getResource("fdfs_client.conf").getPath();
                    file = new File(path);
                    if(file == null || !file.exists()){
                        path = Thread.currentThread().getContextClassLoader().
                                getResource("fdfs_client.conf").getPath();
                    }
                }
                // 读取配置文件
                ClientGlobal.init(path);
            } catch (Exception e) {
                log.error("Init fastdfs error:{}",e.getMessage());
                throw new RuntimeException(e);
            }
        }
    
        public static StorageClient1 getClient() throws IOException {
            return new StorageClient1(new TrackerClient().getConnection(), null);
        }
        
        public static StorageClient1 getClient(TrackerServer trackerServer,StorageServer storageServer){
            return new StorageClient1(trackerServer, storageServer);
        }
        
        public static TrackerServer getTrackerServer() throws IOException{
            return new TrackerClient().getConnection();
        }
        
        public static void releaseServerResource(TrackerServer trackerServer,StorageServer storageServer) throws IOException{
            if(trackerServer != null) trackerServer.close();
            if(storageServer != null) storageServer.close();
        }
        ///////////////////上传文件////////////////
        public static String uploadFile(String filePath) 
                throws IOException {
            return uploadFile(null, new File(filePath));
        }
    
        public static String uploadFile(String groupName, String filePath)
                throws IOException {
            return uploadFile(groupName, new File(filePath));
        }
    
        public static String uploadFile(String groupName, File file)
                throws IOException {
            if (file == null) return null;
            return uploadFile(groupName, new FileInputStream(file), file.getName(), file.length());
        }
    
        public static String uploadFile(File file) throws IOException {
            return uploadFile(null, file);
        }
    
        public static String uploadFile(InputStream input,String fileName, long fileLength) 
                throws IOException {
            return uploadFile(null, input, fileName, fileLength);
        }
    
        public static String uploadFile(String groupName, InputStream inStream,
                String uploadFileName, long fileLength) throws IOException {
            return uploadByteFile(groupName, uploadFileName, fileLength, getFileBuffer(inStream, fileLength));
        }
    
        public static String uploadByteFile(String groupName,
                String fileName, long fileLength, byte[] fileBuff)
                throws IOException {
            String fileId = null;
            String fileExtName = null;
            if (fileName.contains(".")) {
                fileExtName = fileName.substring(fileName
                        .lastIndexOf(".") + 1);
            } else {
                log.warn("Fail to upload file, because the format of filename is illegal.");
                return fileId;
            }
    
            // 建立连接
            TrackerServer trackerServer = getTrackerServer();
            StorageServer storageServer = null;
            StorageClient1 client = getClient(trackerServer, storageServer);
            
            // 设置元信息
            NameValuePair[] metaList = new NameValuePair[3];
            metaList[0] = new NameValuePair("fileName", fileName);
            metaList[1] = new NameValuePair("fileExtName", fileExtName);
            metaList[2] = new NameValuePair("fileLength",
                    String.valueOf(fileLength));
    
            // 上传文件
            try {
                fileId = client.upload_file1(groupName, fileBuff, fileExtName,
                        metaList);
                log.info("upload success. file id is: " + fileId);
            } catch (Exception e) {
                log.warn("Upload file "" + fileName + ""fails");
                throw new RuntimeException(e);
            } finally {
                releaseServerResource(trackerServer, storageServer);
            }
            return fileId;
        }
        //////////////////上传文件END/////////////////
        
        /////////////////下载文件////////////////////
        public static byte[] downloadFile(String groupName, String filepath)
                throws Exception {
            if(filepath == null || "".equals(filepath)) return null;
            TrackerServer trackerServer = null;
            StorageServer storageServer = null;
            try {
                TrackerClient tracker = new TrackerClient();
                trackerServer = tracker.getConnection();
                StorageClient storageClient = new StorageClient(trackerServer,
                        storageServer);
    //            StorageClient1 storageClient1 = new StorageClient1(trackerServer,
    //                    storageServer);
                return storageClient.download_file(groupName, filepath);
            } finally {
                releaseServerResource(trackerServer, storageServer);
            }
        }
    
        public static byte[] downloadFile(String fileId) throws Exception {
            TrackerServer trackerServer = null;
            StorageServer storageServer = null;
            try {
                trackerServer = getTrackerServer();
                StorageClient1 storageClient1 = getClient(trackerServer, storageServer);
                return storageClient1.download_file1(fileId);
            } finally {
                releaseServerResource(trackerServer, storageServer);
            }
        }
        
        public static void downloadFile(String fileId, OutputStream out)
                throws Exception {
            if(fileId != null && out != null){
                try {
                    byte[] b = downloadFile(fileId);
                    out.write(b);
                    out.flush();
                } finally {
                    out.close();
                }
            }
        }
    
        public static void downloadFile(String groupName, String filepath,
                OutputStream out) throws Exception {
            if(filepath != null && out != null){
                try {
                    byte[] b = downloadFile(groupName, filepath);
                    out.write(b);
                    out.flush();
                } finally {
                    out.close();
                }
            }
        }
    
        public static void downloadFile(String groupName, String filepath,
                File descFile) throws Exception {
            OutputStream out = null;
            try {
                out = new FileOutputStream(descFile);
                downloadFile(groupName, filepath, out);
            } finally {
                if(out != null)
                    out.close();
            }
        }
    
        public static List<Map<String,String>> getFileMate(String groupName, String filepath)
                throws Exception {
            if(filepath == null) return null;
            TrackerServer trackerServer = getTrackerServer();
            StorageServer storageServer = null;
            StorageClient storageClient = getClient(trackerServer, storageServer);
            NameValuePair nvps[] = storageClient.get_metadata(groupName, filepath);
            List<Map<String,String>> list = new ArrayList<Map<String,String>>();
            for (NameValuePair nvp : nvps) {
                Map<String,String> map = new HashMap<String,String>();
                map.put(nvp.getName(), nvp.getValue());
                list.add(map);
            }
            return list;
        }
    
        /**
         * 删除文件
         * @return 0:删除成功 其他数值失败
         */
        public static int deleteFile(String groupName, String filepath)
                throws Exception {
            if(filepath == null) return -1;
            TrackerServer trackerServer = getTrackerServer();
            StorageServer storageServer = null;
            StorageClient storageClient = new StorageClient(trackerServer,
                    storageServer);
            return storageClient.delete_file(groupName, filepath);
        }
    
        /**
         * 删除文件
         * 
         * @param groupName
         * @param filepath
         * @throws Exception
         */
        public static int deleteFile(String fileId) throws Exception {
            if(fileId == null) return -1;
            TrackerServer trackerServer = null;
            StorageServer storageServer = null;
            try {
                trackerServer = getTrackerServer();
                StorageClient1 storageClient1 = getClient(trackerServer, storageServer);
                return storageClient1.delete_file1(fileId);
            } finally {
                releaseServerResource(trackerServer, storageServer);
            }
        }
    
        /**
         * 通过fileID查询上传的文件信息
         * 
         * @param fileId
         *            eg:group1/M00/00/00/wKi3glS_XEaAVL3DAAwdkYUdoP8278.gif
         * @return
         * @throws Exception
         */
        public static FileInfo getFileInfo(String fileId) throws Exception {
            if (fileId == null) return null;
            TrackerServer trackerServer = getTrackerServer();
            StorageServer storageServer = null;
            try {
                StorageClient1 client = new StorageClient1(trackerServer, storageServer);
                return client.get_file_info1(fileId);
            } finally {
                releaseServerResource(trackerServer, storageServer);
            }
        }
    
        private static byte[] getFileBuffer(InputStream inStream, long fileLength)
                throws IOException {
            byte[] buffer = new byte[256 * 1024];
            byte[] fileBuffer = new byte[(int) fileLength];
    
            int count = 0;
            int length = 0;
    
            while ((length = inStream.read(buffer)) != -1) {
                for (int i = 0; i < length; ++i) {
                    fileBuffer[count + i] = buffer[i];
                }
                count += length;
            }
            return fileBuffer;
        }
        
        public static void main(String[] args) throws Exception {
            List<Map<String, String>> fileMate = getFileMate("group1","M00/98/73/CgMEwVh5M62AQnf-ABa36R1PUuY660.pdf");
            System.out.println(fileMate.toString());
        }
    }
  • 相关阅读:
    Vim深入研究
    信息安全系统设计基础第十三周学习总结——20135308
    信息安全系统设计基础实验五:通讯协议设计
    信息安全系统设计基础第十二周学习总结 ——20135308
    信息安全系统设计基础实验四:外设驱动程序设计
    信息安全系统设计基础实验三:实时系统的移植
    GDB深入研究——20135308芦畅
    信息安全系统设计基础第十一周学习总结——20135308
    第九次ScrumMeeting博客
    第八次ScrumMeeting博客
  • 原文地址:https://www.cnblogs.com/liuruitao/p/7717877.html
Copyright © 2011-2022 走看看