如何从文件URI中提取文件名并创建相应的链接?

8

我的问题是::

从字符串"/usr/folder1/folder2/filename.ext"中,我需要提取出仅用于显示的文件名(仅为filename.ext)。

  • 我的问题是如何做到这一点?在“ /”上拆分并取最后一个元素是一种方法,但对我来说不太好。
  • 我必须创建一个超链接,其中使用文件的URI作为目标。这将类似于file://domain.com/usr/folder1/folder2/filename.ext
  • 我查看了java.net中的URI和URL接口,但没有找到有用的信息。

    此外,在某些情况下,我的文件路径可能具有逗号、空格等(Windows文件夹)。因此,在提供任何想法时,请将此考虑在内。


    提出的解决方案并不是通用的。请尝试使用http://stackoverflow.com/a/10944586/715269。 - Gangnus
    3个回答

    15

    您可以尝试像这样做:

    File file = new File("/usr/folder1/folder2/filename.ext");
    System.out.println(file.getName());
    

    我不确定如果文件不存在,这是否有效,但我刚尝试了一下,看起来可以正常工作。


    我需要传递给File构造函数的参数是一个Uri,但它被拒绝为无效参数。将Uri转换为字符串很简单:File file = new File(mImageUri.toString()); - Ash Ryan Arnwine

    4

    CommonsIO 提供了解决这个问题的方案:FilenameUtils.getName(),返回文件名+扩展名。

    String filename = FilenameUtils.getName("/usr/folder1/folder2/filename.ext");
    System.out.println(filename); // Returns "filename.ext"
    

    3
    你应该查看File类,特别是getName()方法。这个方法可以获取文件的名称。

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接