103.File(File的分隔符常量,文件路径表示方式,相对与绝对路径和构造File对象)

小知识点:
  • 有构造器的类:可以new对象

  • 没构造器的类

    • 工具类,例如Math类里面几乎全是静态方法
    • 具有能返回Runtime运行时对象的静态方法

有和没有构造器是指:构造器的属性是否是大于等于default属性的

File的分隔符常量
Modifier and TypeFieldDescription
static StringpathSeparator系统依赖路径分隔符的字符,表示为方便的字符串
static charpathSeparatorChar系统依赖路径分隔符字符
static Stringseparator系统依赖的默认名称分隔符字符,表示为方便的字符串
static charseparatorChar系统依赖的默认名称分隔符字符
System.out.println(File.separator);
System.out.println(File.pathSeparator);
System.out.println(File.separatorChar);
System.out.println(File.pathSeparatorChar);

pathSeparator是";"

pathSeparatorChar是’;’

separator 是反斜杠""

separatorChar 是反斜杠’’

文件路径的的两种表示方式
使用斜杠分割
String path = "D:/java/game.png";
		System.out.println(path);
使用反斜杠分割
path = "D:"+File.separator+"java"+File.separator+"game.png";
		System.out.println(path);

File.separator等价于\\:

path = "D:\\java\\game.png";

建议使用斜杠,反斜杠需要转义如果用分割符常量需要分隔路径也比较麻烦。

相对路径与绝对路径
  • 以盘符开头的是绝对路径

    例如:“E:/源库/源代码/Java/IO_test/src/cn/yzy/IO/MidsummerEve_ROW.jpg”

  • 相对路径没有盘符

    例如:“MidsummerEve_ROW.jpg”

    //绝对路径
    File src = new File("E:/源库/源代码/Java/IO_test/src/cn/yzy/IO/MidsummerEve_ROW.jpg");
    System.out.println(src.getAbsolutePath());
    
    //相对路径
    src = new File("MidsummerEve_ROW.jpg");
    System.out.println(src.getAbsolutePath());

打印结果如下:

可以发现相对路径是相对于用户当前的工作目录,运行此java类导致工作路径就是Eclipse的这个类的路径:“E:\源库\源代码\Java\IO_test”,相对路径的参照是当前的工作目录

打印一下当前的工作路径

    //当前路径
	System.out.println(System.getProperty("user.dir"));
	

user.dir1 代表用户当前的工作路径,发现用户当前的工作路径正是绝对路径与相对路径的交集。

java中user.dir到底是啥?(简书)

构造File对象
ConstructorDescription
File(File parent, String child)创建从一个家长的抽象路径名和一个孩子的路径字符串的新 File实例
File(String pathname)通过将给定的路径名的字符串转换成一个抽象路径名创建一个新的 File实例
File(String parent, String child)创建从父路径名的字符串和一个孩子的一个新的 File实例文件
File(URI uri)通过将给定的 file: URI到一个抽象路径名创建一个新的 File实例

函数原型一览:

public File(String pathname)

public File(String parent, String child)

public File(File parent, String child)

public File(URI uri)

使用方式如下:

(1)File(String pathname)

    File src = new File(pathString);
    System.out.println(src.length()); //单位是字节(bytes)

(2)File(String parent, String child)

    File src = new File("E:/源库/源代码/Java/IO_test/src/cn/yzy/IO", "MidsummerEve_ROW.jpg");
    src = new File("E:/源库/源代码/Java/IO_test/", "src/cn/yzy/IO/MidsummerEve_ROW.jpg");
    System.out.println(src.length());

(3)File(File parent, String child)

    File src = new File(new File("E:/源库/源代码/Java/IO_test/"), "src/cn/yzy/IO/MidsummerEve_ROW.jpg");
    System.out.println(src.length());

(4)File(URI uri)

	File aFile;
    try {
      aFile = new File(new URI("file:///https://img-blog.csdnimg.cn/20200720112753625.png"));
      System.out.println(aFile.getName());//false
    } catch (URISyntaxException e) {
      e.printStackTrace();
    }

File对象也可以通过一个不存在的路径构建

    //用一个文件不存在的路径构建File实例
    src = new File("gnjdufdsfsejfosheifjsgoah.png"); //乱码:gnjdufdsfsejfosheifjsgoah
    System.out.println(src.getAbsolutePath());
    
    System.out.println(src.exists());
    System.out.println(src.isFile());
    System.out.println(src.isDirectory());

打印结果都是false—发现文件不存在,并且判断不是文件也不是路径


  1. user.dir--简书 ↩︎

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值