public FileVo listFileInfo(String fileName) throws UpYunExcetion {
        try {
            StringBuffer url = new StringBuffer();
            for (String str : fileName.split("/")) {
                if (str == null || str.length() == 0) {
                    continue;
                }
                url.append(UrlCodingUtil.encodeBase64(str.getBytes("utf-8")) + "/");
            }
            url = url.delete(url.length() - 1, url.length());
            sign.setUri(url.toString());
        } catch (UnsupportedEncodingException e) {
            LogUtil.exception(logger, e);
        }
        sign.setContentLength(0);
        sign.setMethod(HttpMethod.HEAD.name());
        String url = autoUrl + sign.getUri();
        Map<String, String> headers = sign.getHeaders();

        HttpResponse httpResponse = HttpClientUtils.headByHttp(url, headers);
        FileVo fileVo = null;
        if (httpResponse.getStatusLine().getStatusCode() != 200) {
            throw new UpYunExcetion(httpResponse.getStatusLine().getStatusCode(), httpResponse.getStatusLine()
                .getReasonPhrase());
        } else {
            fileVo = new FileVo();
            for (Header header : httpResponse.getAllHeaders()) {
                if ("x-upyun-file-type".equals(header.getName())) {
                    fileVo.setType(header.getValue());
                } else if ("x-upyun-file-size".equals(header.getName())) {
                    fileVo.setSize(Long.valueOf(header.getValue()));
                } else if ("x-upyun-file-date".equals(header.getName())) {
                    fileVo.setCreatedAt(new Date(Long.valueOf(header.getValue()) * 1000));
                }
            }
        }
        return fileVo;
    }