我们要想实现IO的操作,就必须知道硬盘上文件的表现形式。而Java就提供了一个类File供我们使用。
File:用于表示文件和目录的信息,但是它不表示文件的内容。构造方法:
File(String pathname) //根据一个路径得到File对象 File(String parent, String child) //根据一个目录和一个子文件/目录得到File对象 File(File parent, String child) //根据一个父File对象和一个子文件/目录得到File对象
public class FileDemo { public static void main(String[] args) { //这三种方式创建的文件对象都相同 //File(String pathname):根据一个路径得到File对象 File file=new File("demo\\a.txt"); //File(String parent, String child):根据一个目录和一个子文件/目录得到File对象 File file2=new File("demo","a.txt"); //File(File parent, String child):根据一个父File对象和一个子文件/目录得到File对象 File file3=new File(new File("demo"),"a.txt"); } }
public boolean createNewFile() //创建文件 如果存在这样的文件,就不创建了 public boolean mkdir() //创建文件夹 如果存在这样的文件夹,就不创建了 public boolean mkdirs() //创建文件夹,如果父文件夹不存在,会帮你创建出来
public class FileDemo2 { public static void main(String[] args) throws IOException { // 需求:在当前目录下创建一个文件夹demo File file = new File("demo"); System.out.println("mkdir:" + file.mkdir()); // 需求:我要在当前目录demo下创建一个文件a.txt File file2 = new File("demo\\a.txt"); System.out.println("createNewFile:" + file2.createNewFile()); // 需求:我要在目录test下创建一个文件b.txt // Exception in thread "main" java.io.IOException: 系统找不到指定的路径。 // 注意:要想在某个目录下创建内容,该目录首先必须存在。 // File file3 = new File("test\\b.txt"); // System.out.println("createNewFile:" + file3.createNewFile()); // 需求:我要在目录test下创建aaa目录 // File file4 = new File("test\\aaa"); // System.out.println("mkdir:" + file4.mkdir()); //先创建test目录,然后再在test目录下创建aaa // File file5 = new File("test"); // File file6 = new File("test\\aaa"); // System.out.println("mkdir:" + file5.mkdir()); // System.out.println("mkdir:" + file6.mkdir()); // 其实我们有更简单的方法 File file7 = new File("test\\aaa"); System.out.println("mkdirs:" + file7.mkdirs()); // 看下面的这个东西: File file8 = new File("aaa\\a.txt"); System.out.println("mkdirs:" + file8.mkdirs()); //骑白马的不一定是王子,可能是唐僧。 // 注意:创建文件还是文件夹,方法不要调错了。 } }
public boolean delete()
注意:
public class FileDemo3 { public static void main(String[] args) throws IOException { // 删除功能:我要删除demo\\a.txt这个文件 File file = new File("demo\\a.txt"); System.out.println("delete:" + file.delete()); System.out.println("delere:" + new File("demo").delete()); // 删除功能:我要删除test\\aaa这个文件夹 File file2 = new File("test\\aaa"); System.out.println("delete:" + file2.delete()); // 删除功能:我要删除aaa文件夹 //File file3 = new File("aaa"); // System.out.println("delete:" + file5.delete()); //要删除aaa文件夹,要注意aaa文件夹内不能包含文件或者文件夹 //先删除aaa文件下得我文件或者文件夹 File file4 = new File("aaa\\a.txt"); //再删除该文件 File file5 = new File("aaa"); System.out.println("delete:" + file4.delete()); System.out.println("delete:" + file5.delete()); } }
public boolean renameTo(File dest) //如果路径名相同,就是改名。 //如果路径名不同,就是改名并剪切。
public class FileDemo4 { public static void main(String[] args) { File file=new File("demo1\\a.txt"); File file2=new File("demo2\\a.txt"); System.out.println("rename:"+ file.renameTo(file2)); } }
public boolean isDirectory() //判断是否是目录 public boolean isFile() //判断是否是文件 public boolean exists() //判断是否存在 public boolean canRead() //判断是否可读 public boolean canWrite() //判断是否可写 public boolean isHidden() //判断是否隐藏
public class FileDemo5 { public static void main(String[] args) { // 创建文件对象 File file = new File("demo2\\a.txt"); System.out.println("isDirectory:" + file.isDirectory());// false System.out.println("isFile:" + file.isFile());// true System.out.println("exists:" + file.exists());// true System.out.println("canRead:" + file.canRead());// true System.out.println("canWrite:" + file.canWrite());// true System.out.println("isHidden:" + file.isHidden());// false } }
public String getAbsolutePath() //获取绝对路径 public String getPath() //获取相对路径 public String getName() //获取名称 public long length() //获取长度。字节数 public long lastModified() //获取最后一次的修改时间,毫秒值
public class FileDemo6 { public static void main(String[] args) { // 创建文件对象 File file = new File("demo2\\a.txt"); System.out.println("getAbsolutePath:" + file.getAbsolutePath()); System.out.println("getPath:" + file.getPath()); System.out.println("getName:" + file.getName()); System.out.println("length:" + file.length()); System.out.println("lastModified:" + file.lastModified()); } }
public String[] list() //获取指定目录下的所有文件或者文件夹的名称数组 public File[] listFiles() //获取指定目录下的所有文件或者文件夹的File数组
public class FileDemo7 { public static void main(String[] args) { // 指定一个目录 File file = new File("src\\code_00_disk"); // public String[] list():获取指定目录下的所有文件或者文件夹的名称数组 String[] strArray = file.list(); for (String s : strArray) { System.out.println(s); } System.out.println("------------"); // public File[] listFiles():获取指定目录下的所有文件或者文件夹的File数组 File[] fileArray = file.listFiles(); if(fileArray!=null){ for (File f : fileArray) { System.out.println(f.getName()); } } System.out.println("--------------"); listAllFiles(file); } //递归地列出一个目录下所有文件 public static void listAllFiles(File dir) { if (dir == null || !dir.exists()) { return; } if (dir.isFile()) { System.out.println(dir.getName()); return; } for (File file : dir.listFiles()) { listAllFiles(file); } } }
public class FileDemo8 { public static void main(String[] args) { //指定源目录 File srcFolder = new File("demo1"); //指定目标目录 File destFolder = new File("demo2"); File[] fileArray = srcFolder.listFiles(); if(fileArray!=null){ for (File file : fileArray) { File newFile=new File(destFolder,file.getName()); file.renameTo(newFile); } } } }