使用Java在OS X中获取文件扩展名

时间:2012-03-08 00:58:15

标签: java macos file

我想在我的Java代码中获取文件扩展名:

File f = new File(....);
String name = f.getName();
int pos = name.lastIndexOf('.');
String ext = name.substring(pos+1);

我尝试了这段代码,但它在OS X Lion中不起作用,在Windows中可行。

更新的 例如 我的桌面上有一个png文件,名称为Screen Shot 2012-02-23 at 1.26.27 PM 我使用此代码获得27 PM扩展名。

4 个答案:

答案 0 :(得分:1)

您的代码完全按照您的要求执行。它在文件中找到 filename 扩展名。问题是你有一个愚蠢名称的文件应该有一个“.png”扩展名,但没有。如果您仍希望代码处理此问题,您可能需要查看解释文件头以确定文件的类型,这可能是OS X正在做的事情,知道它实际上是.png文件。

答案 1 :(得分:0)

在UNIX中,并非所有文件都有扩展名,可能这就是你发生的事情,但是在你提供一个堆栈跟踪或更明确的定义不起作用之前我无法分辨。

我拿了你的代码并创建了一个样本:

localhost:Desktop oscarryz$ cat Fe.java 
import java.io.File;
import static java.lang.System.out;

class Fe {
    public static void main( String ... args ) {
        File f = new File("Screen Shot 2012-03-06 at 10.03.35 PM.png");
        out.println("File exists: " + f.exists() );
        out.println("Extension: "   + 
            f.getName().substring( f.getName().lastIndexOf('.')+1) 
        );
    }
}
localhost:Desktop oscarryz$ javac Fe.java 
localhost:Desktop oscarryz$ java Fe 
File exists: true
Extension: png

您可能在传递文件名时删除了扩展名,因为您显示的机制可以完美地在OSX上运行。

答案 2 :(得分:0)

你得到了什么输出我有OSX SnowLeopard,这个工作正常请记住你需要根据操作系统选择文件分隔符。这可能是一个问题,因为您没有显示文件名我只能检查文件分隔符

解决方案来自garsinfotech.com labs

答案 3 :(得分:0)