Android存储文件大小为long变量

时间:2017-03-27 04:39:27

标签: java connection long-integer

我通过以下行在我的Android应用程序中获取文件大小,该应用程序位于远程计算机上:

long fileLengthOnServer = connection.getContentLength();

问题是有时fileLengthOnServer的值是负值。正如我在一些帖子中读到的那样,一个长变量应该由最后一个L的值初始化,但我不知道在我的情况下如何添加它。如果我把它长期解决问题?

提前致谢

2 个答案:

答案 0 :(得分:0)

假设您的连接是URLConnection,请使用getContentLengthLong()功能:

https://docs.oracle.com/javase/7/docs/api/java/net/URLConnection.html#getContentLengthLong()

答案 1 :(得分:0)

您可以从文件长度中读取文件大小。


长尺寸= file.length();

   /**
     * @param size file.length
     * @return file size in string
     */
    private String getReadableFileSize(long size) {
        try {
            if (size <= 0) {
                return "0";
            }
            final String[] units = new String[]{"B", "KB", "MB", "GB", "TB"};
            int digitGroups = (int) (Math.log10(size) / Math.log10(1024));
            return new DecimalFormat("#,##0.#").format(size / Math.pow(1024, digitGroups)) + " " + units[digitGroups];
        } catch (Exception e) {
            e.printStackTrace();
        }
        return "";
    }

只需调用此方法并传递文件长度

Log.d(LOG_TAG, String.format("BitmapSize : %s", getReadableFileSize(imageFile.length())));