在Java中检测文件扩展名

在Java中检测文件扩展名,java,file,ends-with,Java,File,Ends With,我试图检测我正在打开的文件是否是HTML文件 我已经试过了: try { String file = fileName.getCanonicalPath(); if (file.endsWith(".htm") | file.endsWith(".html")) { } } catch (IOException e) { e.printStackTrace(); } 但是文件.endsWith()似乎没有检测到任何东西。文件名就是我要打开的文件

我试图检测我正在打开的文件是否是HTML文件

我已经试过了:

try {
   String file = fileName.getCanonicalPath();

   if (file.endsWith(".htm") | file.endsWith(".html")) {

   }

   } catch (IOException e) {
       e.printStackTrace();
   }
但是
文件.endsWith()似乎没有检测到任何东西。
文件名
就是我要打开的文件。如果我必须发布用于打开文件的代码,请告诉我


提前感谢。

这一行看起来可疑:

if (file.endsWith(".htm") | file.endsWith(".html")) {
|
运算符是按位OR运算符。您需要逻辑OR运算符,
|

编辑

在评论中添加@MadProgrammer suggested的内容:


在文件名上调用
toLowerCase()
,以说明文件以
.HTM
.HTML
结尾的可能性。这一行看起来可疑:

if (file.endsWith(".htm") | file.endsWith(".html")) {
|
运算符是按位OR运算符。您需要逻辑OR运算符,
|

编辑

在评论中添加@MadProgrammer suggested的内容:


在文件名上调用
toLowerCase()
,以解释文件以
.HTM
.HTML
结尾的可能性。您可能在这里也遇到了案例问题。正如@rgetman指出的,您可能也需要一个逻辑or

if (file.toLowerCase().endsWith(".htm") || file.toLowerCase().endsWith(".html")) {

你可能在这里也有一个案例问题。正如@rgetman指出的,您可能也需要一个逻辑or

if (file.toLowerCase().endsWith(".htm") || file.toLowerCase().endsWith(".html")) {

我还将添加
file.toLowerCase().endsWith
,以确保不会遇到案例比较问题+1无less@MadProgrammer-很好,据我们所知可能是“.HTM”。-1,按位
工作正常,只是没有短路功能。这将如何解决问题?使用
|
使第二个布尔表达式求值,而不管第一个表达式返回什么。它可以工作。我想得太多了。尽管如此,我还是在代码中移动了它。我不确定是什么原因导致它起作用,但我还是会接受你的答案。我还要添加
file.toLowerCase().endsWith
,以确保不会遇到案例比较问题+1less@MadProgrammer-很好,据我们所知可能是“.HTM”。-1,按位
工作正常,它只是没有短路功能。这将如何解决问题?使用
|
使第二个布尔表达式求值,而不管第一个表达式返回什么。它可以工作。我想得太多了。尽管如此,我还是在代码中移动了它。我不确定是什么原因导致它起作用,但我还是会接受你的答案。你真的需要规范路径吗?你真的需要规范路径吗?