Windows和Linux的文件路径名

Mas*_* T. 9 java

下面是我的Windows目录的路径.通常路径应该是\而不是//但两者似乎都有效.

__CODE__

对于Linux路径也是如此.法线应该有/而不是//.下面和上面的代码片段工作正常,将获取指定文件的内容.

__CODE__

所以,两者都使用奇怪的文件路径声明,但两者似乎都运行正常.请详细说明.

例如,

__CODE__ __CODE__

Mad*_*ist 20

通常,在Windows上指定文件路径时,您将使用反斜杠.但是,在Java和Windows世界之外的许多其他地方,反斜杠是转义字符,因此您必须将它们加倍.在Java中,Windows路径通常如下所示:String WinDir = "C:\\trash\\blah\\blah";.另一方面,正斜杠不需要加倍,并且可以在Windows和Unix上运行.双正斜杠是没有害处的.他们对路径没有任何作用,只占用空间(//相当于/./).看起来有人只是将所有反斜杠的空间转换为正斜杠.你可以删除它们.在Java中,有一个名为File.separator(String)和File.separatorChar(char)的字段,它根据您的平台为您提供正确的分隔符(/\).在某些情况下使用它可能更好:String WinDir = "C:" + File.separator + "trash" + File.separator + "blah" + File.separator + "blah";

  • @SotiriosDelimanolis.当然.`//`与`/./`等效.这是一个完全有效的结构.只占用字符串中的空格. (2认同)
  • 如果您广泛使用 Windows API,则有几个函数只接受反斜杠。例如,诸如“PathCchStripToRoot”之类的路径操作函数。还有搜索函数`NeedCurrentDirectoryForExePathW`,它被`CreateProcessW`调用来判断是否为“.”。应添加到其 EXE 搜索路径中。另外,如果相对符号链接使用斜杠而不是反斜杠(例如“/rooted/relative/symlink”或“../parent/relative/symlink”),则“CreateSymbolicLinkW”会设置损坏的替代路径。这是一个错误,因为内核在评估链接时仅保留反斜杠。 (2认同)