【问题标题】:apache commons IOUtils.toByteArray not compiling for androidapache commons IOUtils.toByteArray 不为 android 编译
【发布时间】:2014-03-13 02:24:06
【问题描述】:

我要使用方法

byte[] IOUtils.toByteArray(Uri uri)

来自org.apache.commons.io.IOUtils。 My Uri 是一个典型的android.net.Uri 类型的android uri。有谁知道我可以如何解决这个问题?中介可能正在从 uri 获取输入流。有人知道怎么做吗?

【问题讨论】:

  • 对不起 - 为什么它必须是 apache-commons IOUtils?您可以使用 InputStream 执行此操作:stackoverflow.com/questions/2436385/…
  • 我不想推出自己的方法,然后花太多时间寻找可能的错误。

标签: android uri bytearray inputstream apache-commons


【解决方案1】:

该方法使用java.net.URI(参考:IOUtils javadoc),而不是android.net.Uri

所以示例用法如下:

android.net.URI auri = new android.net.URI(whatever);
java.net.URI juri = new java.net.URI(auri.toString());
try {
    byte[] output = IOUtils.toByteArray(juri);
} catch (IOException e) {
    e.printStackTrace();
}

(假设您已经导入并包含在构建路径中 org.apache.commons.io 库)

【讨论】:

    【解决方案2】:

    Apache commons 适用于以下各项:

    context.getContentResolver().openInputStream(uri);
    byte[] attachmentBites = IOUtils.toByteArray(in);
    

    【讨论】:

    • 您的问题是如何将 IOUtils.toByteArray 与 android.net.Uri 一起使用。您不需要 InputStream。我认为我的回答是准确的并且符合问题,请谨慎并接受/支持答案
    • 感谢您的意见。鉴于这个答案使用的行数要少得多,我接受它。我 +1 你的回复。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2013-06-25
    • 2011-01-04
    • 1970-01-01
    • 2019-05-20
    • 1970-01-01
    • 1970-01-01
    • 2017-07-27
    • 2023-03-10
    相关资源
    最近更新 更多