当前位置: 首页 > 面试题库 >

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

暴德运
2023-03-14
问题内容

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

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

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

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

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

excel文件是由客户编写的,他们写了一些错误的文件名,我的意思是,如果文件实际具有小写扩展名,则他们以大写形式写扩展名,反之亦然。

我在UNIX服务器上运行该应用程序

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

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

我想要的是

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

如果文件名具有 .Jpg之 类的文件扩展名,则不知道该怎么办!我是否应该通过更改大小写来检查它?


问题答案:

这样,我解决了问题:

public String getActualFilePath() {
    File givenFile = new File(filePath);
    File directory = givenFile.getParentFile();

    if(directory == null || !directory.isDirectory()) {
        return filePath;
    }


    File[] files = directory.listFiles();
    Map<String, String> fileMap = new HashMap<String, String>();

    for(File file : files) {                        
        if(file.isDirectory()){
            continue;
        }

        String absolutePath = file.getAbsolutePath();
        fileMap.put(absolutePath, StringUtils.upperCase(absolutePath));
    }

    int noOfOcc = 0;
    String actualFilePath = "";

    for(Entry<String, String> entry : fileMap.entrySet()) {
        if(filePath.toUpperCase().equals(entry.getValue())) {
            actualFilePath = entry.getKey();
            noOfOcc++;
        }
    }

    if(noOfOcc == 1) {
        return actualFilePath;
    }

    return filePath;
}

filePath是文件的完整路径。



 类似资料:
  • 问题内容: 我遇到一个区分大小写的问题,无法解决问题。 这就是我的文件结构。我只输入要使用的目录,但实际上我使用的是完整安装的CI3。 这是类定义语法的样子: /application/core/My_Controller.php /application/core/Public_Controller.php /application/controllers/application_control

  • 问题内容: 我正在尝试提出一个要求区分大小写的结果的请求。 例如在我的数据库中 该请求是 但我有3行作为结果,我只想要abcdef 我试图找到一个解决方案 但是我有这个错误: 未知归类:’Latin1_General_CS_AS’{“成功”:false,“错误”:“#1273-未知归类:’Latin1_General_CS_AS’”} 谢谢 问题答案: 感谢您的帮助,我找到了不是latin1 ut

  • 问题内容: 我有一个上传脚本,需要检查文件扩展名,然后基于该文件扩展名运行单独的功能。有人知道我应该使用什么代码吗? 问题答案: 是您要寻找的 PHP.net

  • 问题内容: 我有一个Lucene索引,该索引当前区分大小写。我想添加的 选项 有不区分大小写作为后备的。这意味着与案例匹配的结果将获得更大的权重,并且将首先出现。例如,如果结果数限制为10,并且有10个匹配项符合我的情况,那就足够了。如果仅找到7个结果,则可以从不区分大小写的搜索中再添加3个结果。 我的案子实际上更复杂,因为我有不同重量的物品。理想情况下,匹配“错误”的表壳会增加一些重量。不用说,

  • 对于报告(0.1%的所有查询),我需要返回一个所有可能类别的列表,区分大小写! 考虑以下文件: 运行以下查询: 返回: 是否有方法返回区分大小写的类别(存储在文档中)?我对此查询结果中的感兴趣。 Elasticsearch论坛中的问题 谢谢,伊泰