小知识点:
-
有构造器的类:可以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 代表用户当前的工作路径,发现用户当前的工作路径正是绝对路径与相对路径的交集。
构造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—发现文件不存在,并且判断不是文件也不是路径