Получить расширение файла в OS X, используя Java - PullRequest
0 голосов
/ 08 марта 2012

Я хочу получить расширение файла в моем коде Java:

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

Я попробовал этот код, но он не работал в OS X Lion, в Windows он работает.

UPDATE например у меня на рабочем столе png файл с таким именем Screen Shot 2012-02-23 at 1.26.27 PM я получаю расширение 27 PM с этим кодом.

Ответы [ 4 ]

1 голос
/ 08 марта 2012

Ваш код делает именно то, что вы просили. Он находит расширение filename в файле. Проблема в том, что у вас есть файл с глупым именем, которое должно иметь расширение .png, но не имеет. Если вы все еще хотите, чтобы ваш код обрабатывал это, вам может потребоваться интерпретировать заголовок файла, чтобы определить тип файла, что, вероятно, и делает OS X, чтобы знать, что это действительно. png файл.

0 голосов
/ 08 марта 2012

Попробуйте использовать FilenameUtils # getExtension () .

0 голосов
/ 08 марта 2012

Какой вывод вы получаете У меня OSX SnowLeopard, на котором это работает нормально, пожалуйста, имейте в виду разделитель файлов, который вы должны выбрать согласно операционной системе.это может быть проблемой, так как вы не указали имя файла, я могу предложить это только, пожалуйста проверьте разделитель файлов .

Решение от garsinfotech.com labs

0 голосов
/ 08 марта 2012

В 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 отлично.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...