2012-03-08 3 views
0

Я хочу, чтобы получить расширение файла в моем Java-код:Получить расширение файла в OS X с помощью 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 расширение с этим кодом.

+0

Какая ошибка вы получаете в ** OS X **? –

+1

Что значит «не работает»? Какова результирующая ценность 'ext'? Чего вы ожидаете? –

+0

В чем проблема? Какой вклад вы дали ему, что не работает и что он вам дал? – Kevin

ответ

1

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

0

В UNIX не все файлы имеют расширение, возможно, это то, что происходит с вами, но пока вы не предоставите stacktrace или более четкое определение не работает Не могу сказать.

Я взял свой код и создать образец:

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

0

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

Решение от garsinfotech.com лаборатории

Смежные вопросы