繁体   English   中英

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

[英]How to ensure case-sensitive resource is what I look for on a case-insensitive file system?

我有一个程序需要使用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),绝对不能保证系统上只有一个文件与该路径匹配(匹配表示文件的绝对路径包含您指定的路径) 。 此外,如果存在多个匹配项,则不能保证它们的大小写会有所不同,因此使用区分大小写的方法来验证哪个文件是错误的不是一个好方法。 此外,对于不区分大小写的系统,两个文件都具有相同的名称,但是它们位于不同的绝对位置(但是相对于不同上下文的相同相对位置[read:文件夹])。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM