Java基础之io详解(1)File篇
Java基础之io详解(一)File篇
相关概念
绝对路径:绝对路径名是完整的路径名,不需要任何其他信息就可以定位它所表示的文件。例如window系统下,“C:\Users\downloads\a.txt”就是一个绝对路径名。
相对路径:与绝对路径相反,相对路径名必须使用取自其他路径名的信息进行解释。默认情况下,java.io 包中的类总是根据当前用户目录来解析相对路径名。此目录由系统属性 user.dir 指定,通常是 Java 虚拟机的调用目录。
以上是java JDK文档中的解释,相对路径有点难以理解,下面详细解释一下相对路径的概念:
官方定义中的当前用户目录也就指的是java虚拟机的调用目录,所以我们要首先搞清楚当我们编译一个工程时在哪里调用的jvm。参看文档可知,这个目录存放在系统属性user.dir中,那我们打印一下这个属性值。
public class IoDemo {
public static void main(String[] args) {
System.out.println(System.getProperty("user.dir"));
}
}
而这个目录就是我的工程所在的目录,由此可见,Eclipse中启动jvm都是在项目根路径上启动的。
然后我尝试将IoDemo.class类放到了d盘的projects文件夹下,并且使用cmd命令行来编译该类,结果如下:
可以看到打印结果为:D:\projects 因此得知,使用命令行编译时,是在该类文件所在的根路径上启动jvm的。
当然还有很多种其他的情况,默认路径是不同的,这里不再一一阐述。值得注意的是,我们可以使用”.”或者”.\”来表示这个默认路径。
例子说明:
import java.io.File;
import java.io.IOException;
public class IoDemo {
private static String SYSTEM_PATH = System.getProperty("user.dir");
public static void main(String[] args) {
//使用相对路径名声明一个文件对象
File fileA = new File("a.txt");
if (!fileA.exists()) {
try {
fileA.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//使用默认路径和相对路径名拼接一个绝对路径名
File fileB = new File(SYSTEM_PATH + File.separator + "b.txt");
if (!fileB.exists()) {
try {
fileB.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//使用绝对路径生成一个文件
File fileC = new File("D:" + File.separator + "Prabir" + File.separator
+ "Documents" + File.separator + "workspaces" + File.separator
+ "eclipse" + File.separator + "IoDemo" + File.separator
+ "c.txt");
if (!fileC.exists()) {
try {
fileC.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
System.out.println("fileA的绝对路径-->" + fileA.getAbsolutePath());
System.out.println("fileB的绝对路径-->" + fileB.getAbsolutePath());
System.out.println("fileC的绝对路径-->" + fileC.getAbsolutePath());
System.out.println("默认路径-->" + SYSTEM_PATH);
}
}
结果:
常用方法
- separator File类的一个公共静态字段,代表与系统有关的默认名称分隔符,例如在windows中代表”\”,在unix平台上代表”/”,所以使用它可以解决跨平台的问题。
- exists() 测试此抽象路径名表示的文件或目录是否存在。
- getAbsolutePath() 返回此抽象路径名的绝对路径名字符串。
- getName() 返回由此抽象路径名表示的文件或目录的名称。
- getParent() 返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回 null。
- isDirectory() 测试此抽象路径名表示的文件是否是一个目录。
- length() 返回由此抽象路径名表示的文件的长度。
- list() 返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录。
- listFiles() 返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件。
- mkdir() 创建此抽象路径名指定的目录。不常用
- mkdirs() 创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。常用
参考博客:http://www.2cto.com/kf/201110/107616.html