操作文件 File类
属性
修饰符 | 属性 | 说明 |
static String | pathSeparator | 依赖于系统的路径分隔符,String 类型的表⽰ |
static char | pathSeparator | 依赖于系统的路径分隔符,char 类型的表⽰ |
在Windows中,路径分隔符支持"/"和"\",Linux分隔符仅支持"/".
构造方法
方法 | 说明 |
File(String pathname) | 根据⽂件路径创建⼀个新的File实例,路径可以是绝对路径或者相对路径. |
File(File parent, String child) | 根据父目录加孩子文件路径,创建一个File实例. |
File(String parent, String child) | 根据父目录加孩子文件路径,创建一个File实例.父目录用路径表示. |
对于相对路径:
1.如果在IDEA中运行项目,那么工作目录就是项目所在的目录.
2.如果代码打包为jar包,那么工作目录就是jar包所在目录.
主要方法
修饰及返回值类型 | 方法名 | 说明 |
String | getParent() | 返回FIle对象的父目录文件路径 |
String | getName() | 返回File对象的纯文件名称 |
String | getPath() | 返回FIle对象的文件路径 |
String | getAbsolutePath() | 返回FIle对象的绝对路径 |
String | getCanonicalPath() | 返回FIle对象的修饰过的绝对路径 |
boolean | exists() | 判断FIle对象描述的文件是否存在 |
boolean | isDirector() | 判断File对象描述的文件是否是一个目录 |
boolean | isFile() | 判断FIle对象描述的文件是否是一个文件 |
boolean | createNewFile() | 根据File对象创建一个空文件,创建成功返回true. |
boolean | delete() | 删除File对象只想的文件,删除成功返回true. |
void | deleteOnExit() | 在JVM结束时,删除File对象所指向的文件. |
String[] | list() | 返回File目录下所有的文件名. |
File[] | listFile() | 返回File目录下所有的文件,用File对象表示. |
boolean | mkdir() | 创建FIle对象所描述的目录. |
boolean | mkdirs() | 创建FIle对象所描述的目录,如果必要则创建中间的目录. |
boolean | renameTo(File dest) | 进行文件重命名,也可以视为剪切\粘贴操作. |
boolean | canRead() | 判断用户是否有可读权限. |
boolean | canWrite() | 判断用户是否有可写权限. |
getPath(),getAbsolutePath()与getCanonicalPath()
这三个方法都是返回文件的路径,但是结果略有差异.getCanonicalPath在使用时可能会抛出IOException异常.
public static void main(String[] args) throws IOException {File file = new File("../T.txt");System.out.println("getPath() = " + file.getPath());System.out.println("getAbsolutePath() = " + file.getAbsolutePath());System.out.println("getCanonicalPath() = " + file.getCanonicalPath());}
在使用相对路径时,AbsolutePath返回的是针对当前目录解析相对路径后获得的路径,而CanonicalPath返回的是文件的绝对路径.
createNewFIle(),delete()与deleteOnExit()
public static void main(String[] args) throws IOException {File file = new File("T.txt");System.out.println(file.exists() ? "文件存在" : "文件不存在");System.out.println(file.createNewFile() ? "文件创建成功" : "文件创建失败");System.out.println(file.exists() ? "文件存在" : "文件不存在");System.out.println(file.delete() ? "文件删除成功" : "文件删除失败");System.out.println(file.exists() ? "文件存在" : "文件不存在");}
createNewFile()在使用时可能会抛出IOException.
public static void main(String[] args) throws IOException, InterruptedException {File file = new File("T.txt");System.out.println(file.exists() ? "文件存在" : "文件不存在");System.out.println(file.createNewFile() ? "文件创建成功" : "文件创建失败");file.deleteOnExit();System.out.println(file.exists() ? "文件存在" : "文件不存在");}
对于deleteOnExit(),在JVM未结束前,并不会删除文件.
mkdir()与mkdirs()
mkdir与mkdirs的主要区别在于能否创建中间目录.
public static void main(String[] args) {File file = new File("./aaa");file.mkdir();}
File file = new File("./bbb/ccc");file.mkdir();
File file = new File("./bbb/ccc");file.mkdirs();
当使用mkdir时,如果目录需要中间目录才能创建,那么就无法成功创建目录.而使用mkdirs则可以创建中间目录与目标目录.
renameTo()
File file = new File("./T.txt");File dest = new File("./1.txt");file.renameTo(dest);
成功将T.txt重命名为1.txt.
File file = new File("./1.txt");File dest = new File("./src/IO/1.txt");file.renameTo(dest);
成功将1.txt移动到指定位置.