怀疑文件名

时间:2010-10-18 09:23:07

标签: java file

b / w抽象路径名和路径名字符串有什么区别。当我读到关于字符串分隔符

时,我遇到了这两个

5 个答案:

答案 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详细说明了这一点:

  

抽象路径名有两个组成部分:

     
      
  1. 可选的系统相关前缀字符串,例如磁盘驱动器说明符,UNIX根目录为“/”,Microsoft Windows UNC路径名为“\”,

  2.   
  3. 零个或多个字符串名称的序列。

  4.   

例如,路径名字符串的抽象版本

"/home/aioobe/tmp/test.txt"

由以下两部分组成:

  1. 前缀:"/"
  2. 字符串名称列表
    1. "home"
    2. "aioobe"
    3. "tmp"
    4. "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)

抽象路径名有两个组成部分:

  1. 可选的系统相关前缀字符串,例如磁盘驱动器说明符,UNIX根目录为“/”,Microsoft Windows UNC路径名为“\\”,
  2. 一个零个或多个字符串名称的序列。
  3. 这就是Java内部以独立于操作系统的方式表示资源路径的方式。

    路径名是该抽象的可读表示,也是您可以在OS终端中输入以到达该文件的名称,即

    C:\等等\ blah.txt