我正在开发一个需要在 Mac OS X和Windows 上工作的Java项目。有许多变量可以将路径存储到各种资源和文件中。
处理它们的最佳方法是将它们全部放在单独的类(例如,常量)中,并为SVN中的文件维护两个分支吗?
更新: 不仅仅是路径分隔符的问题(正向与反向斜杠)。两个系统的目录结构都不同。在Mac上,我将资源保存在各种目录中。比如,某处的图像,某处的日志文件。在Windows上,我可能会使用完全不同的目录。所有目录都不必是一棵树的一部分(即它们不在一个主目录下的不同目录中,称为“资源”或其他东西)。这不一定是糟糕的编程习惯。有时您需要访问系统文件或系统范围的公共目录,而您无法将它们放在一个最高目录下
答案 0 :(得分:2)
您是否考虑过使用属性文件? Apache commons config应该是跨平台的,它可以智能地处理属性文件的位置。
这种方式只有一个构建版本,但配置文件是特定于操作系统的,维护,构建和测试应该要少得多。
答案 1 :(得分:0)
如果您使用的是JDK 1.4或更高版本,并且用户需要能够更改这些路径,则可以使用内置的Preferences API来存储/更新它们。如果没有,您可以为每个操作系统定义常量,并调用System.getProperty(os.name)
以确定要使用哪个操作系统。这仍然可以防止您必须为每个平台分别构建。
答案 2 :(得分:0)
不确定究竟是什么问题。 (Java的设计与平台无关。)
查看java.io.File静态常量pathSeparator,pathSeparatorChar,separator和separatorChar。如果你有一个关于如何组织资源的常量树结构(即点格式:resources.data.test.woof.txt),你可以使用File.separatorChar而不是'。'并且您拥有系统特定的路径。
另外,不要忽视信息量很大的System.getProperty()方法。
这应该足以在任何FS上走任何路径。