apache commons IOUtils.toByteArray未针对android编译

apache commons IOUtils.toByteArray未针对android编译,android,uri,bytearray,inputstream,apache-commons,Android,Uri,Bytearray,Inputstream,Apache Commons,我想用这个方法 byte[] IOUtils.toByteArray(Uri uri) 来自org.apache.commons.io.IOUtils。我的Uri是一个典型的android Uri,类型为android.net.Uri。有人知道我该怎么解决这个问题吗?中介可能正在从uri获取输入流。有人知道怎么做吗?该方法使用java.net.URI(参考:),而不是android.net.URI 因此,示例用法如下所示: android.net.URI auri = new android.

我想用这个方法

byte[] IOUtils.toByteArray(Uri uri)

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

该方法使用
java.net.URI
(参考:),而不是
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
库)

apache commons可以很好地处理以下内容:

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

抱歉-为什么必须是apache commons IOUtils?您可以使用InputStream来实现这一点:我不想推出自己的方法,然后花太多时间寻找可能的bug。您的问题是如何将IOUtils.toByteArray与android.net.Uri一起使用。您不需要输入流。我认为我的回答是准确的,符合问题的要求,请谨慎接受/投票回答。谢谢你的意见。鉴于这个答案使用的字数少得多,我接受它。我+1你的回答。谢谢