【问题标题】:Get file name from complex URI从复杂的 URI 中获取文件名
【发布时间】:2016-06-23 07:48:26
【问题描述】:

我想下载一个不以文件名和扩展名结尾的文件。

例如下面提到的 uri 用于下载文件。下载后获取文件名(包括其扩展名)以保存文件的最佳方法是什么。

https://pixabay.com/static/uploads/photo/2015/10/01/20/32/mushroom-967719_640.jpg?attachment

以下代码返回“mushroom-967719_640.jpg?attachment”

URL url = new URL(FILE_URI);
...........................
File downloadingFile = new File(url.getFile());
downloadingFile.getName();

我正在寻找可以从任何此类 uri 中获取“name.extension”的通用解决方案。

【问题讨论】:

  • 为什么不使用该结果,然后删除“附件”,然后删除最后一个字符(“?”)。好像你停在一码线上。
  • 提示:subString 方法。
  • 哦该死的我才意识到上面的 uri 不是你得到的 uri。请编辑您的帖子并发布代码,以便我们更好地帮助您。
  • @Razgriz 我正在寻找一种获取名称的通用方法。在这种情况下,“.png”之后可以有任何内容,它是“?附件”。我将编辑我的问题。

标签: java android url download filenames


【解决方案1】:

从我的脑海中写下这个:

String filename = downloadingFile.getName().substring(0, downloadingFile.getName().length - 11);

或者让它更具可读性

int filenameOriginalLength = downloadingFile.getName().length;
int excessStringLength = 11; // the string "?attachment" is 11 characters long

String filename = downloadingFile.getName().substring(0, filenameOriginalLength - excessStringLength);

基本上我们在这里所做的是,我们从起始字母(索引 0)到 ?attachment 出现之前(字符串的长度 - ?附件的长度)获取 downloadingFile.getName() 的子字符串。

可能会偏离一个字符,您必须通过运行它并调整 excessStringLength 来微调它。

【讨论】:

  • 我正在寻找可以从任何此类 uri 中获取“name.extension”的通用解决方案。我已经编辑了我的问题。
  • 哦,那我的回答应该成立吧?试试看,它应该会给你mushroom-967719_640.jpg。 :)
猜你喜欢
  • 2011-05-14
  • 1970-01-01
  • 2011-09-25
  • 2014-03-30
  • 2012-10-27
  • 2010-11-09
  • 2013-12-08
  • 2011-03-25
  • 2014-06-06
相关资源
最近更新 更多