FastDFS(2)java客户端


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;
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值