Проверьте расширение файла в Java

Я должен импортировать данные из файла Excel в базу данных и для этого я хотел бы проверить расширение выбранного файла.

Это мой код:

String filename = file.getName();
String extension = filename.substring(filename.lastIndexOf(".") + 1, filename.length());

String excel = "xls";
if (extension != excel) {
    JOptionPane.showMessageDialog(null, "Choose an excel file!");
}
else {
    String filepath = file.getAbsolutePath();
    JOptionPane.showMessageDialog(null, filepath);
    String upload = UploadPoData.initialize(null, filepath);

    if (upload == "OK") {
        JOptionPane.showMessageDialog(null, "Upload Successful!");
    }
}

Но я всегда получаю

Выберите файл Excel!

Я не могу найти, что не так с моим кодом, может кто-нибудь, пожалуйста, помогите.

8 ответов

Решение

Следующий

extension != excel

должно быть

!excel.equals(extension)

или же

!excel.equalsIgnoreCase(extension)

Смотрите также

== проверяет ссылочное равенство. Для теста на равенство значений используйте .equals, использование String#equalsIgnoreCase если вы хотите, чтобы дело не принималось во внимание во время теста на равенство.

Другое дело: не изобретай велосипед, если он сильно не сломан. В вашем случае вы должны использовать Apache Commons FilenameUtils#isExtension для проверки расширения.

if (extension != excel){
   JOptionPane.showMessageDialog(null, "Choose an excel file!");

}

следует использовать как

if (!extension.equals(excel)){
   JOptionPane.showMessageDialog(null, "Choose an excel file!");

}

А также

 if (upload == "OK") {
 JOptionPane.showMessageDialog(null,"Upload Successful!");
}

как

 if ("OK".equals(upload)) {
 JOptionPane.showMessageDialog(null,"Upload Successful!");
}

Использование

excel.equals(extension)

or

excel.equalsIgnoreCase(extension)

Вы можете использовать Apache Commons Api, чтобы проверить расширение файла.

String filename = file.getName();
if(!FilenameUtils.isExtension(filename,"xls")){
  JOptionPane.showMessageDialog(null, "Choose an excel file!");
}

http://commons.apache.org/io/api-release/index.html?org/apache/commons/io/package-summary.html

В моей программе я сделал это

if(file_name.endsWith(".xls") || file_name.endsWith(".xlsx"))
   // something works with file

Используйте метод equals() вместо символов != в вашем случае. Я имею в виду написать

if (!(extension.equals(excel))){..........}

Как насчет

if (filename.endsWith("xls"){
    <blah blah blah>
}

?

Другие вопросы по тегам