gpt4 book ai didi

java - 如何确保我在不区分大小写的文件系统上寻找区分大小写的资源?

转载 作者:太空宇宙 更新时间:2023-11-04 14:03:21 24 4
gpt4 key购买 nike

我有一个程序需要使用ClassLoader#getResource(String)查找资源。该程序通常运行良好,但在 Windows 机器上我遇到了问题。我将其分解为文件系统不区分大小写的属性。通常,会尝试多个路径来查找正确的文件。然而,在不区分大小写的系统上,可能会匹配错误的文件。在我的程序中,资源名称区分大小写,因此,如果大小写不同,则在不区分大小写的系统上返回的文件可能是错误的。

例如:我正在寻找 bar/Foo.class 并返回文件 bar/FOO.class。我需要承认并拒绝此案

检查返回的 URL 是否适合我指定的路径以区分大小写的方式的最佳方法是什么?

我正在考虑将指定路径与URL的getPath结果进行比较。但没有任何地方告诉我生成的 URL 是否将使用我给定的路径或真实路径。因此,除非有人向我展示这是不同且指定的文档,否则我无法确定情况总是如此。

最佳答案

问题是您没有使用绝对路径来查找特定资源。因此,您的问题的答案很简单:您不能。对于不区分大小写的系统,来自任何一个上下文的路径“bar/foo.class”只能有一个文件。在这样的路径中可以存在多个文件的唯一方法是它们具有不同的绝对路径(例如/a/bar/foo.class 和/b/bar/foo.class),在这种情况下它们具有不同的上下文(=有两个不同的文件夹“bar”,它们都包含名为“foo.class”的文件)。

当搜索与非绝对路径(如 bar/foo.class)匹配的所有资源时,绝对不能保证系统上只有一个文件与该路径匹配(匹配意味着文件的绝对路径包含您指定的路径)。此外,如果存在多个匹配项,则不能保证它们的大小写会有所不同,因此使用区分大小写来验证哪个文件错误并不是一个好方法。此外,对于不区分大小写的系统,这两个文件具有相同的名称,但只是位于不同的绝对位置(但与不同上下文[读取:文件夹]的相对位置相同)。

如果可能,请使用绝对路径搜索文件。这样,在区分大小写的系统上,只会匹配大小写相同的文件,而在不区分大小写的系统上,将匹配该绝对路径中的一个文件(如果有)。希望这个答案对您更有用。

关于java - 如何确保我在不区分大小写的文件系统上寻找区分大小写的资源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29103307/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com