先总的说一下区别:
File.pathSeparator指的是分隔连续多个路径字符串的分隔符,例如:
java -cp test.jar;abc.jar HelloWorld
就是指“;”
File.separator才是用来分隔同一个路径字符串中的目录的,例如:
C:\Program Files\Common Files
就是指“\”
separatorChar
public static final char separatorChar
与系统有关的默认名称分隔符。此字段被初始化为包含系统属性 file.separator 值的第一个字符。在 UNIX 系统上,此字段的值为 '/';在 Microsoft Windows 系统上,它为 '\'。
separator
public static final String separator
与系统有关的默认名称分隔符,为了方便,它被表示为一个字符串。此字符串只包含一个字符,即 separatorChar。
pathSeparatorChar
public static final char pathSeparatorChar
与系统有关的路径分隔符。此字段被初始为包含系统属性 path.separator 值的第一个字符。此字符用于分隔以路径列表形式给定的文件序列中的文件名。在 UNIX 系统上,此字段为 ':';在 Microsoft Windows 系统上,它为 ';'。
pathSeparator
public static final String pathSeparator
与系统有关的路径分隔符,为了方便,它被表示为一个字符串。此字符串只包含一个字符,即 pathSeparatorChar。
例子:
File ft = new File(File.separator);//指向当前class文件所在的盘符,例如D:
File ft2 = new File(ft,"File_separator.txt");// D:\File_separator.txt
mkdir()
创建此抽象路径名指定的目录,创建一个目录,如果有不存在但是必要的父目录,则创建不成功
例如:
File f=new File(File.separator+"测试");
f.mkdir(); 可以创建成功
File f=new File(File.separator+"测试父目录"+File.separator+"子测试");
f.mkdir(); 由于“测试父目录”这个文件夹不存在,则创建失败了
怎么解决这个问题呢?那就是
File f=new File(File.separator+"测试父目录"+File.separator+"子测试");
f.mkdirs();
mkdirs() 创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。注意,此操作失败时也可能已经成功地创建了一部分必需的父目录。
URI,URL,URN
URI 统一资源标示符 URL 统一资源定位符(定位器) URN 统一资源命名
其实URL,URN都是统一资源标示符,只不过URL不仅提供了资源表示,还提供了资源的位置
URL,URN更像是URI的子类
总结一下:URL是一种具体的URI,它不仅唯一标识资源,而且还提供了定位该资源的信息。URI是一种语义上的抽象概念,可以是绝对的,也可以是相对的,而URL则必须提供足够的信息来定位,所以,是绝对的,而通常说的relative URL,则是针对另一个absolute URL,本质上还是绝对的。
绝对路径:例如:C盘下的摸一个文件的路径,这个就是绝对路径。
相对路径:例如:工程目录下需要读取某个文件,相对于运行该读取程序的文件路径,就是相对路径。