Java基础之I/O详解(一)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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值