8

文件名的一致性很好。

MyActivity.java 包含公共类 MyActivity

我希望将其布局的 xml 文件称为 res/layout/MyActivity.xml

但我收到一条错误消息,提示“文件名无效:必须仅包含 [a-z0-9_.]”

所以两个问题:

  1. 为什么字符集如此有限(甚至不是大写?来吧!) - 啊 - 这个限制可能已经到位,所以你永远不会被不区分大小写的文件系统搞砸,比如 Apple 的 HFS+ (尽管血腥故事参见维基百科http://en.wikipedia.org/wiki/Comparison_of_file_systems#cite_note-note-35-77

  2. 哪些文件名受到限制 - 所有资源?只是资源/布局?res/layout 加上其他一些文件夹?

任何人都可以确认 1,并提供 2 的详细信息吗?

谢谢,

彼得

4

3 回答 3

11

为什么字符集如此有限

因为名称必须是有效的 Java 标识符,所以您可以使用类似常量R.layout.foo在运行时标识布局。

哪些文件名受到限制 - 所有资源?只是资源/布局?res/layout 加上其他一些文件夹?

里面的任何东西res/

于 2010-06-24T22:49:56.833 回答
2

不确定原因#1。从未在任何有关资源的阅读中看到解释。因为#2根据我的经验,任何将在 java 中用作 id 的东西,例如 ,R.drawable.markerR.string.default_message必须遵循[a-z0-9_].

于 2010-06-24T22:42:36.613 回答
0

当使用 MacOS X 作为开发平台时,几乎任何处理跨平台代码的开发人员迟早都会遇到下载/签出/克隆后无法构建 Linux/UNIX 项目的源代码的问题,因为该项目有两个同名单个目录中的文件仅因大小写而异;在 OS X 上,这意味着您最终只得到一个文件,因为第二个文件将覆盖第一个文件。

当然 HFS+ 可以区分大小写,但这只能在格式化分区时进行配置,默认情况下,所有 Mac 都在预格式化的分区上预装 OS X,并带有不区分大小写的 HFS+(因为这是 HFS+ 的默认模式) . 因此,您首先必须重新格式化新购买的 Mac 并重新安装 OS X 才能实现该目标。然后为遇到麻烦做好准备,因为许多应用程序依赖于 Mac 上的不区分大小写;一个非常著名的例子是 Steam(您不能从区分大小写的 HFS+ 运行 Steam)。

它不仅仅是 MacOS。FAT 不区分大小写,而 NTFS 可以区分大小写(就像 HFS+ 一样),但默认情况下不区分大小写。另外我认为 SMB 不符合协议规范(至少是旧版本)。CD 上使用的文件系统不是,等等。

所以我想从一开始就避免任何麻烦,谷歌认为强制文件全部小写是个好主意,在这种情况下,你使用什么文件系统或它是如何配置的都没有关系。当然,如果您仍然可以在源代码文件中遇到这个问题,那就有点愚蠢了,但是这些可能是混合大小写的决定是早于 Android 的决定,并且在谷歌甚至梦想使用该系统之前很多年,Sun 就已经做出了决定.

于 2015-02-19T00:10:59.440 回答