狭义的文件分成两大类
文件的元信息,路径的操作
Java中通过java.io.File类来对文件(包括目录)进行抽象的描述。有File对象,并不代表真实存在该文件。
File类中常见的属性
修饰符及类型 | 属性 | 说明 |
---|---|---|
static String | pathSeparator | 依赖与系统的路径分隔符,String类型的表示 |
static char | pathSeparator | 依赖与系统的路径分割符,char来兴的表示 |
File类中常见的构造方法
签名 | 说明 |
---|---|
File(File parent,String child) | 根据父目录+孩子文件路径,创建一个新的File实例 |
File(String pathname) | 根据文件路径创建一个新的File实例,路径可以是绝对路径或者相对路径 |
File(String parent,String child) | 根据父目录+孩子文件路径,创建一个新的File实例,父目录用路径表示 |
File类中常见的方法
修饰符及返回值类型 | 方法名 | 说明 |
---|---|---|
String | getParent() | 返回File对象的父目录文件路径 |
String | getName() | 返回File对象的纯文件名称 |
String | getPath() | 返回File对象的文件路径 |
String | getAbsolutePath() | 返回File对象的绝对路径 |
String | getCanonicalPath() | 返回File对象的修饰过的绝对路径 |
boolean | exists() | 判断File对象描述的文件是否真实存在 |
boolean | isDirectory() | 判断File对象代表的文件是否是一个目录 |
boolean | isFile() | 判断File对象代表的文件是否是一个普通文件 |
boolean | createNewFile() | 根据File对象,自动创建一个空文件。成功创建后返回true |
boolean | delete() | 根据File对象,删除该文件。成功删除后返回true |
void | deleteOnExit() | 根据File对象,标注文件将被删除,删除动作会到JVM运行结束时才会进行 |
String[] | list() | 返回File对象代表的目录下的所有文件名 |
File[] | listFiles() | 返回File对象代表的目录下的所有文件,以File对象表示 |
boolean | mkdir() | 创建File对象代表的目录 |
boolean | mkdirs() | 创建File对象代表的目录,如果必要,会创建中间目录 |
boolean | renameTo(File dest) | 进行文件改名,也可以视为我们平时的剪切,粘贴操作 |
boolean | canRead() | 判断用户是否对文件有可读权限 |
boolean | canWrite() | 判断用户是否对文件有可写权限 |
get系列方法的特点和差异
public class TestDemo1 { public static void main(String[] args) throws IOException { //注意,有 File 对象,并不代表真实存在该文件 File file = new File("./test.txt"); System.out.println(file.getParent()); System.out.println(file.getName()); System.out.println(file.getPath()); System.out.println(file.getAbsoluteFile()); System.out.println(file.getAbsolutePath()); System.out.println(file.getCanonicalFile()); System.out.println(file.getCanonicalPath()); } } /** . test.txt .\test.txt C:\JAVA_code\java100_1015\.\test.txt C:\JAVA_code\java100_1015\.\test.txt C:\JAVA_code\java100_1015\test.txt C:\JAVA_code\java100_1015\test.txt */
普通文件的创建、删除
public class TestDemo2 { public static void main(String[] args) throws IOException { //包内相对路径的写法 File file = new File("src/IODemo1/hello-world.txt"); System.out.println(file.exists()); System.out.println(file.isDirectory()); System.out.println(file.isFile()); System.out.println(file.createNewFile()); System.out.println(file.exists()); System.out.println(file.isDirectory()); System.out.println(file.isFile()); System.out.println(file.createNewFile()); } } /** false false false true true false true false */
普通文件的删除
public class TestDemo3 { public static void main(String[] args) throws IOException { File file = new File("Test3.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()); } } /** true false true true false */
程序退出时文件删除(一般用于临时性文件)
public class TestDemo4 { public static void main(String[] args) throws IOException, InterruptedException { File file = new File("test4.txt"); System.out.println(file.createNewFile()); Thread.sleep(3000); file.deleteOnExit(); } }
通过list遍历当前目录下的所有文件【使用递归】
public class TeacherDemo6 { /* * List<String>是存放String类型的对象 String[]数组里面是存放String型的值 * String[]是数组,定长,不可变 * List<String> 是泛型 ,非定长,可变 * */ public static List<String> result = new ArrayList<>(); public static void getAllFiles(String basePath){ File file = new File(basePath); if(file.isFile()){ result.add(basePath); }else if(file.isDirectory()){ String[] files = file.list(); for (String f:files) { getAllFiles(basePath+"/"+f); } }else{ //当前文件既不是普通文件,也不是目录。例如scoket文件,管道文件,设备块文件 } } public static void main(String[] args) { getAllFiles("."); //System.out.println(result); for (String s: result) { System.out.println(s); } } }
创建目录(mkdir())
public class TestDemo6 { public static void main(String[] args) { File file = new File("Test6"); System.out.println(file.isDirectory()); System.out.println(file.isFile()); System.out.println(file.mkdir()); System.out.println(file.isDirectory()); System.out.println(file.isFile()); } } /** false false true true false */
创建多级目录(mkdirs())
public class TestDemo6 { public static void main(String[] args) { File file = new File("Test6\\test6"); System.out.println(file.isDirectory()); System.out.println(file.isFile()); System.out.println(file.mkdirs()); System.out.println(file.isDirectory()); System.out.println(file.isFile()); } }
修改文件名,移动文件(renameTo)
public class TestDemo7 { public static void main(String[] args) { File file = new File("hello.txt"); File file2 = new File("./Test6/test6/hello.txt"); //移动文件 file.renameTo(file2); } } public class TestDemo7 { public static void main(String[] args) { File file = new File("./Test6/test6/hello.txt"); File file2 = new File("./Test6/test6/helloworld.txt"); //重命名 file.renameTo(file2); } }