最近在系统地学习JavaIO流,首先学习的就是Java中的文件类。
File类主要函数总览:
这些函数都很简单,根据函数名就可以很好的掌握函数具体原理和用法。在这里我只讲解三个地方:
1. getPath()、getAbsolutePath()和getCanonicalPath()
String path = ".\\test.txt";
String path1 = "E:\\test.txt";
File file = new File(path);
File file2 = new File(path1);
System.out.println(file.getPath());
System.out.println(file.getAbsolutePath());
System.out.println(file.getCanonicalPath());
System.out.println("<------------->");
System.out.println(file2.getPath());
System.out.println(file2.getAbsolutePath());
System.out.println(file2.getCanonicalPath());
运行结果:
可以发现:
使用了绝对路径的所有函数三种方法的结果均是该文件的绝对路径。
使用了相对路径的三种函数结果不同,分别为:
getPath():相对路径本身
getAbsolutePath():定义文件时路径对应的绝对路径,但是没有处理"."或".."的情况
getCanonicalPath():规范的绝对路径,会处理"."或".."的情况
2. File中的Separator,SeparatorChar,pathSeparator和pathSeparatorChar
总的来说,Separator是用来分隔一个路径字符串中的不同目录的。pathSeparator用来分隔连续多个路径字符串。
例如:"E:\mydir1\mydir2\test.txt";在这个字符串中,"\"就是Separator
例如:"E:\mydir1\mydir2\test.txt;G\mydir3\test2.txt",其中,";"就是E:\mydir1\mydir2\test.txt和G\mydir3\test2.txt的pathSeparator。
Separator和SeparatorChar:
public static final char separatorChar = fs.getSeparator();
public static final String separator = "" + separatorChar;
可以看出,Separator是由SeparatorChar和一个空字符串相加组成一个字符串。在Unix中,SeparatorChar是'/',在Windows中,SeparatorChar是'\'
pathSeparator和pathSeparatorChar:
public static final char pathSeparatorChar = fs.getPathSeparator();
public static final String pathSeparator = "" + pathSeparatorChar;
可以看出,pathSeparator 是由pathSeparatorChar和一个空字符串相加组成一个字符串。在Unix中,pathSeparator 是':',pathSeparatorChar是';'
同时,我们在文件的创建中经常出现下面这种情况;
String path = "E:\\test.txt";
File file = new File(path);
那么"\\"是什么呢?"\\"并不是一个文件路径中目录的分隔符,只是在字符串中,所有的'\'均表示转义,意为下一个字符表示特殊含义。所以我们需要使用"\"的时候,需要变为"\\"进行转义。"\\"本身并没有任何意思。表示转义的'\'并不真正的出现在字符串中。
例如:
结果:
我们还可通过一下形式来定义路径:
String path= "E:" + File.separator + "test123.txt";
3. file.mkdir()和file.mkdirs()
String path = "E:\\123\\456";
File dir = new File(path);
dir.mkdir();//如果123文件夹不存在则无法创建456
dir.mkdirs();//如果123文件夹不存在也可以创建456