b / w抽象路径名和路径名字符串有什么区别。当我读到关于字符串分隔符
时,我遇到了这两个答案 0 :(得分:2)
请注意,* nix反斜杠(\)是文件名中的有效字符,但不是Windows上的。
在Windows和* nix上运行此命令并比较打印输出:
File f1 = new File("c:\\somepath\\somefile.txt");
System.out.println(f1.getName());
File f2 = new File("c:/somepath/somefile.txt");
System.out.println(f2.getName());
在Windows上,两个变体都打印somefile.txt
但在* nix上打印第一个变体
c:\somepath\somefile.txt
第二个变体打印somefile.txt
因此使用/“使用起来更安全”。 (将文件从Windows客户端上载到Solaris服务器并尝试仅提取文件名时找到此信息。)
答案 1 :(得分:1)
这取决于您运行JVM的系统。 例如,Windows和Linux需要不同的斜杠分隔符(前进/后退)。 它是文件类中的separatorChar值。 Abstract PathName与系统无关。此路径名由文件类使用。 @see File constructor doc
答案 2 :(得分:1)
b / w抽象路径名和路径名字符串有什么区别?
抽象路径名基本上是以独立于操作系统的方式表示的常规路径名,而路径名字符串只是表示路径名的(可能是系统相关的)字符串。
documentation for File详细说明了这一点:
抽象路径名有两个组成部分:
可选的系统相关前缀字符串,例如磁盘驱动器说明符,UNIX根目录为“/”,Microsoft Windows UNC路径名为“\”,
- 醇>
零个或多个字符串名称的序列。
例如,路径名字符串的抽象版本
"/home/aioobe/tmp/test.txt"
由以下两部分组成:
"/"
"home"
,"aioobe"
,"tmp"
,"test.txt"
答案 3 :(得分:1)
路径名字符串用于命名各种操作系统中的文件和目录。它们因操作系统而异。例如,在Linux中它是:/home/user/a.java
,在Windows中它是:c:\dev\a.java
因此,当说路径名字符串转换为抽象路径名时,这意味着路径名字符串现在独立于操作系统。
例如:
File path = File("/home/user/a.java")
将linux依赖文件路径转换为 JVM可理解文件路径(上例中为path
对象),称为抽象路径名。
我猜你一直在阅读this,但理解这一点的最好方法是实现一个简单的5行java代码,看看你用File类得到什么选项。
答案 4 :(得分:1)
抽象路径名有两个组成部分:
这就是Java内部以独立于操作系统的方式表示资源路径的方式。
路径名是该抽象的可读表示,也是您可以在OS终端中输入以到达该文件的名称,即
。C:\等等\ blah.txt