【问题标题】:Android store file size in long variable长变量中的Android存储文件大小
【发布时间】:2023-03-05 17:00:01
【问题描述】:

我通过以下行在远程机器上的 android 应用程序中获取文件大小:

long fileLengthOnServer = connection.getContentLength();

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

提前致谢

【问题讨论】:

标签: java connection long-integer


【解决方案1】:

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

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

【讨论】:

  • 感谢您的回复!我在 android studio 中使用这种方法,应用程序崩溃,说明该方法不可用,而 android studio 没有抱怨它。然后我在Intellij中使用了该方法,它没有问题!任何想法
  • 我猜你正在为低于 7.0 的目标 SDK 进行编译?而您的 IDE 可能正在使用 JDK 7.0 或更高版本(上面的参考资料说该方法的“自 7.0 以来”)
【解决方案2】:

你可以从长度读取你的文件大小。


长尺寸 = 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())));

【讨论】:

    猜你喜欢
    • 2022-01-09
    • 1970-01-01
    • 2012-11-10
    • 2013-04-15
    • 2022-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-03
    相关资源
    最近更新 更多