java - 区分大小写的文件扩展名和存在检查

标签 java file case-sensitive case-insensitive file-exists

我需要检查文件是否存在。这可以通过 File#exists() 方法来完成。但这种存在检查是区分大小写的。我的意思是,如果我在代码中有一个文件名 some_image_file.jpg 但如果物理上该文件是 some_image_file.JPG 那么此方法表示该文件不存在。如何检查文件是否存在且扩展名不区分大小写并获取实际文件名?

在我的场景中,我有一个 Excel 文件。每行包含文件和文件名的元数据。在某些情况下,我只有文件名,而在其他情况下,我可以有完整路径。我将一行表示为一个文档。

这些文件放置在服务器中。我的工作是

  • 逐行读取 Excel 文件并列出所有文档。
  • 取出文件名或文件路径。
  • 创建文件的完整路径。
  • 检查文件是否存在。
  • 验证文档中提供的其他元数据/信息。
  • 上传文件。

如果文件不存在或某些元数据无效,我的应用程序将引发异常。

Excel文件是客户写的,他们把一些文件名写错了,我的意思是如果文件实际上有小写的扩展名,他们就把扩展名写成了大写,反之亦然。

我正在 unix 服务器上运行该应用程序。

由于文件扩展名不匹配,因此 File#exists() 给出 false,最终我的代码抛出异常。

放置文件的文件夹可以包含30000个或更多文件。

我想要的是

  • 获取文件的完整路径。
  • 检查文件是否存在。
  • 如果不存在则
  • 通过转换扩展名的大小写来检查文件是否存在。
  • 如果大小写转换后不存在则抛出异常。
  • 如果存在,则返回实际的文件名或文件路径。

如果文件名的文件扩展名类似于.Jpg,不知道该怎么办!我应该通过改变大小写来排列它来检查它吗?

最佳答案

您可以使用

获取文件夹中的文件名
File.list() 

并通过

检查名称
equalsIgnoreCase()

或者尝试http://commons.apache.org/io/ 并使用

FileNameUtils.directoryContains(final String canonicalParent, final String canonicalChild)

关于java - 区分大小写的文件扩展名和存在检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13620555/

相关文章:

java - 验证字符串输入可能是有效路径

swift - 将变量从一个 swift 文件传递​​到另一个文件

MySQL - 添加约束一次,在不同情况下添加两次

java - 队列从一台 EMX 服务器迁移到另一台

java - MYSQL在linux平台不返回结果,在windows下

objective-c - 如何将 NSString 中的路径转换为 ​​CFURLRef 和 FSRef*

windows - Windows 使用什么语言环境来检查用户名?

powershell 命令行参数以大写形式执行?

java - 使用 Java 客户端库的 Google Subscription Defer 会出现 500 Internal Server Error

java - 减去日期;日期格式