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

小知识点:

  • 有构造器的类:可以new对象

  • 没构造器的类

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

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

File的分隔符常量

Modifier and Type Field Description
static String pathSeparator 系统依赖路径分隔符的字符,表示为方便的字符串
static char pathSeparatorChar 系统依赖路径分隔符字符
static String separator 系统依赖的默认名称分隔符字符,表示为方便的字符串
static char separatorChar 系统依赖的默认名称分隔符字符
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对象

Constructor Description
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--简书 ↩︎

猜你喜欢

转载自blog.csdn.net/qq_43808700/article/details/107460964