Java Google驱动器文件流和.Net System.IO.File.Exists:区分大小写的奇怪之处

Java Google驱动器文件流和.Net System.IO.File.Exists:区分大小写的奇怪之处,java,c#,.net,file,google-drive-api,Java,C#,.net,File,Google Drive Api,在我的.Net桌面应用程序中,我有几个依赖于System.IO.File.Exists的例程 显然,System.IO.File.Exists“变得”,在某种程度上,当要检查的文件位于Google驱动器文件流(G:)驱动器下时,区分大小写(!!)。这显然不是真正发生的事情,但结果是一样的 突然间,我正在构建的路径的大小写,然后抛出到File.Exists变得很重要;然而,我不能依赖于此,因为我们的前缀和扩展框可能会有所不同(在WindowsAFAIK上一直都很好) 显然,Java也有同样的问题(

在我的.Net桌面应用程序中,我有几个依赖于
System.IO.File.Exists
的例程

显然,
System.IO.File.Exists
“变得”,在某种程度上,当要检查的文件位于Google驱动器文件流(G:)驱动器下时,区分大小写(!!)。这显然不是真正发生的事情,但结果是一样的

突然间,我正在构建的路径的大小写,然后抛出到
File.Exists
变得很重要;然而,我不能依赖于此,因为我们的前缀和扩展框可能会有所不同(在WindowsAFAIK上一直都很好)

显然,Java也有同样的问题(我测试过)

问题

听说过吗?有什么解决方法或修复方法吗?有没有一种等效的方法可以在GoogleAPI中使用?仅仅在这里和那里的几个调用中引入Google API似乎有些过分,但是如果我不得不

更新


我向谷歌报告了这个问题,在与他们的支持团队进行了大量讨论之后,工程部门终于承认了这个问题,并将很快解决它。

File.Exists既不区分大小写,也不区分大小写,它只是将问题推送到底层文件系统,而这个文件系统可能是。因此,如果文件流为支持“按需流”而设置的文件系统是区分大小写的,那么这就是为什么您会得到这个答案。换句话说,除非谷歌在创建此文件系统时出错,否则这可能是正确的,而且是设计的,您无法更改。换言之,如果你的应用程序假设它可以混合和匹配文件名和文件夹的大小写,并希望这能起作用,那么它可能是错误的。我同意@LasseV.Karlsen,但是,这就是File.Exists在Windows上运行多年的方式(好的,几年了),所以我不希望它的行为会随着Google Drive File Stream而改变,在某种意义上,不区分大小写的行为是Windows平台上的预期行为。我敢打赌我不是唯一一个做出这种假设的人。不,我想你误解了。NTFS和FATx文件系统不区分大小写这一事实并不能保证Microsoft或Windows能够做到这一点,而是这些文件系统的一种选择。如果选择,不同的文件系统可以选择区分大小写。没有人保证连接到Windows安装的所有文件系统都不区分大小写。基本上,这里没有错误,除了您和/或您的程序假设所有文件系统都不区分大小写之外。至于“没人在乎”,这是一个老问题,请参见文件。Exists既不区分大小写也不区分大小写,它只是将问题推到底层文件系统,而此文件系统可能是。因此,如果文件流为支持“按需流”而设置的文件系统是区分大小写的,那么这就是为什么您会得到这个答案。换句话说,除非谷歌在创建此文件系统时出错,否则这可能是正确的,而且是设计的,您无法更改。换言之,如果你的应用程序假设它可以混合和匹配文件名和文件夹的大小写,并希望这能起作用,那么它可能是错误的。我同意@LasseV.Karlsen,但是,这就是File.Exists在Windows上运行多年的方式(好的,几年了),所以我不希望它的行为会随着Google Drive File Stream而改变,在某种意义上,不区分大小写的行为是Windows平台上的预期行为。我敢打赌我不是唯一一个做出这种假设的人。不,我想你误解了。NTFS和FATx文件系统不区分大小写这一事实并不能保证Microsoft或Windows能够做到这一点,而是这些文件系统的一种选择。如果选择,不同的文件系统可以选择区分大小写。没有人保证连接到Windows安装的所有文件系统都不区分大小写。基本上,这里没有错误,只是您和/或您的程序假设所有文件系统都不区分大小写