【问题标题】:How do I get the file extension of a file in Java?如何在 Java 中获取文件的文件扩展名?
【发布时间】:2011-04-04 00:40:45
【问题描述】:

为了清楚起见,我不是在寻找 MIME 类型。

假设我有以下输入:/path/to/file/foo.txt

我想要一种方法来分解此输入,特别是扩展名为 .txt。在 Java 中有没有内置的方法来做到这一点?我想避免编写自己的解析器。

【问题讨论】:

  • 你永远不知道什么时候会出现一些将扩展定义为用逗号分隔的新平台。现在您需要编写平台相关的代码。 Java 框架应该更具前瞻性,并具有用于获取扩展的 API,它们编写依赖于平台的代码,而作为 API 的用户,您只需说获取扩展。
  • @ArtOfWarfare:天啊。让我们创建一个包含数千个类的 100MB JRE,但请确保不要实现任何从 "filename.txt" 返回 "txt" 的方法,因为某个平台可能想要使用 "filename,txt"
  • @EricDuminil "确保不要实现任何从 "filename.txt" 返回 "txt" 的方法" ???试试path.substring(path.lastIndexOf(".")); ..... 是的.. 他们肯定不会白白复制一些东西...
  • @VelocityPulse 这正是正是困扰我的。由于没有获取文件扩展名的标准方法,因此您会得到几十个半错误的答案和略有不同的实现。您的代码使用 2 种方法(我希望有 one 单个显式方法),它从 "filename.txt" 返回 ".txt",这可能不是预期的结果,最糟糕的是,它如果没有扩展名,则返回 StringIndexOutOfBoundsException 而不是返回空字符串。

标签: java file io


【解决方案1】:

JFileChooser 怎么样?这并不简单,因为您需要解析其最终输出...

JFileChooser filechooser = new JFileChooser();
File file = new File("your.txt");
System.out.println("the extension type:"+filechooser.getTypeDescription(file));

这是一种 MIME 类型...

好的...我忘了你不想知道它的 MIME 类型。

以下链接中的有趣代码: http://download.oracle.com/javase/tutorial/uiswing/components/filechooser.html

/*
 * Get the extension of a file.
 */  
public static String getExtension(File f) {
    String ext = null;
    String s = f.getName();
    int i = s.lastIndexOf('.');

    if (i > 0 &&  i < s.length() - 1) {
        ext = s.substring(i+1).toLowerCase();
    }
    return ext;
}

相关问题: How do I trim a file extension from a String in Java?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-29
    • 2014-04-14
    • 2012-09-12
    • 1970-01-01
    • 1970-01-01
    • 2019-11-17
    • 2016-10-23
    相关资源
    最近更新 更多