FastDFS(2)java客户端

来源:互联网 发布:jdbc insert多个数据 编辑:程序博客网 时间:2024/05/22 05:13


public class FastDFSOperation {    private static boolean hasInited = false;    private static void Init() {        synchronized (TXFastDFSOperation.class) {            if (hasInited)                return;            // 读取配置文件            try {                File file = new File(Thread.currentThread().getContextClassLoader().getResource("fdfs_client.conf").toURI());                ClientGlobal.init(file.getAbsolutePath());                TXFastDFSOperation.hasInited = true;            } catch (Exception e) {                e.printStackTrace();            }        }    }         private static StorageClient getStorageClient() throws IOException{        Init();        TrackerClient trackerClient = new TrackerClient();        TrackerServer trackerServer = trackerClient.getConnection();        ProtoCommon.activeTest(trackerServer.getSocket());        StorageClient storageClient = new StorageClient(trackerServer, null);        return storageClient;    }    /**     * 上传文件     * @param arg文件的输入流     * @param size文件的大小     * @param groupname文件要上传的group名称     * @param flexname文件的类型     * @return group / index     */    public static String[] Uploadfile(InputStream arg, Long size,String groupname,String flexname) {        String[] stringArray = null;        NameValuePair[] nvp = null;        byte[] fileBuffer = null;        try{            fileBuffer = changeStreamToByteArray(arg);            nvp = new NameValuePair[]{new NameValuePair("size", size.toString())};            stringArray = getStorageClient().upload_file(groupname, fileBuffer, flexname, nvp);        }catch (Exception e) {            e.printStackTrace();        }        return stringArray;    }    /**     * 成功失败返回值自己去查     * @param group     * @param index     * @return     */    public static Integer deleteFile(String group, String index) {        Integer returnValue = null;        try{            returnValue = getStorageClient().delete_file(group, index);        }catch (Exception e) {            e.printStackTrace();        }        return returnValue;    }         /**     * 下载文件     * @param group文件所在group     * @param index文件的index     * @param offset带下载文件的偏移量     * @param downByte从偏移量往后需要下载的文件大小     * @return     */    public static InputStream DownloadFile(String group, String index, Long offset, Long downByte) {        InputStream inputStream = null;        try {            byte[] fileBuffer = getStorageClient().download_file(group, index, offset, downByte);            inputStream = new ByteArrayInputStream(fileBuffer);        } catch (IOException | MyException e) {            e.printStackTrace();        }        return inputStream;    }    /**     * @param group     * @param index     * @param offset     * @param downByte     * @return     */    public static byte[] DownloadFileReByte(String group, String index, Long offset, Long downByte) {        byte[] fileBuffer = null;        try {            fileBuffer = getStorageClient().download_file(group, index, offset, downByte);        } catch (IOException | MyException e) {            e.printStackTrace();        }        return fileBuffer;    }    /**     * 获取文件大小     * @param group文件所在的group     * @param index文件的index     * @return     */    public static Long GetFileSize(String group, String index) {        FileInfo fileInfo = null;        Long returnValue = new Long(-1);        try {            fileInfo = getStorageClient().get_file_info(group, index);        } catch (Exception e) {            e.printStackTrace();        }        if(fileInfo != null) {            returnValue = fileInfo.getFileSize();        }        return returnValue;    }         /**     * 将文件流转换成字节数组     * @param is     * @return     * @throws IOException     */    private static byte[] changeStreamToByteArray(InputStream is) throws IOException {        ByteArrayOutputStream swapStream = new ByteArrayOutputStream();        byte[] buff = new byte[100];        int offset = 0;        while((offset = is.read(buff, 0, 100)) > 0) {            swapStream.write(buff, 0, offset);        }        byte[] fileBuffer = swapStream.toByteArray();        return fileBuffer;    }}