程序运行之前 第一次运行程序: 表明创建成功
第二次运行程序 表明创建失败,那是因为第一次创建时文件或文件下已经存在,第二次运行便不在重复创建 注意:若在封装时忘记写盘符号,则默认在根目录下
(2)删除功能 public boolean delete():删除文件或者文件夹 注意:只能删除空文件夹
package org.westos.demo2; import java.io.File; import java.io.IOException; public class MyTest2 { public static void main(String[] args) throws IOException { //将文件封装 File file = new File("E:\\aaa.txt"); //调用delete方法删除文件,返回值表示是否删除成功 boolean delete = file.delete(); System.out.println(delete); //封装单层目录 File file1 = new File("E:\\aaa\\"); //调用delete方法删除空文件夹,返回值表示是否删除成功 boolean delete1 = file1.delete(); System.out.println(delete1); //封装多层目录 File file2 = new File("E:\\bbb\\"); //调用delete方法删除文件夹,返回值表示是否删除成功 boolean delete2 = file2.delete(); System.out.println(delete2); } }运行程序前:
运行程序后: 表明文件和空文件夹被成功删除,而非空文件夹则删除失败
(3)重命名功能 public boolean renameTo(File file):把文件重命名为指定路径 注意:如果路径相同,就是改名 如果路径不同,就是剪切并改名
package org.westos.demo2; import java.io.File; import java.io.IOException; public class MyTest2 { public static void main(String[] args) throws IOException { //封装文件 File file = new File("a.txt"); //创建文件 file.createNewFile(); //封装新路径并重命名,返回值代表是否重命名成功 File file1 = new File("E:\\b.txt"); boolean b = file.renameTo(file1); System.out.println(b); } }返回true,重命名成功
(4)判断功能 public boolean isDirectory(): 判断是否是目录 public boolean isFile(): 判断是否是文件 public boolean exists(): 判断是否存在 public boolean canRead(): 判断是否可读 public boolean canWrite(): 判断是否可写 public boolean isHidden(): 判断是否隐藏
package org.westos.demo2; import java.io.File; import java.io.IOException; public class MyTest2 { public static void main(String[] args) throws IOException { //封装文件 File file = new File("a.txt"); //创建文件 file.createNewFile(); //判断是否是文件 boolean file1 = file.isFile(); System.out.println(file1);//true //判断是否是文件夹 boolean directory = file.isDirectory(); System.out.println(directory);//false //判断是否存在 boolean exists = file.exists(); System.out.println(exists);//true //判断是否可读,可写,隐藏 boolean b = file.canRead(); System.out.println(b); boolean b1 = file.canWrite(); System.out.println(b1); boolean hidden = file.isHidden(); System.out.println(hidden); } }(5)获取功能 public String getAbsolutePath(): 获取绝对路径 public String getPath(): 获取相对路径 public String getParent() 获取上一级路径,返回字符串,没有返回null public File getParentFile() 获取上一级路径,返回File类型,没有返回null public long getTotalSpace() 返回总容量 单位字节 public long getFreeSpace() 返回剩余容量 单位字节 public String getName(): 获取名称 public long length(): 获取长度。字节数 public long lastModified(): 获取最后一次的修改时间,毫秒值
package org.westos.demo2; import java.io.File; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; public class MyTest2 { public static void main(String[] args) throws IOException { //封装文件 File file = new File("a.txt"); //创建文件 //手动写入vfdsfsafafafadsfa内容 file.createNewFile(); //获取a文件的绝对路径 String path = file.getAbsolutePath(); System.out.println(path); //获取a文件的相对路径 String path1 = file.getPath(); System.out.println(path1); //获取a文件的上一级目录,以字符串的形式返回,没有返回null //封装成对象的只有a文件,所以它没有上一级目录 String parent = file.getParent(); System.out.println(parent); //获取a文件的上一级目录,以file类型返回 //推荐使用,方便操作 File parentFile = file.getParentFile(); System.out.println(parentFile); //获取文件的总容量 long totalSpace = file.getTotalSpace(); System.out.println("总容量"+totalSpace); //获取文件剩余容量 long freeSpace = file.getFreeSpace(); System.out.println("剩余容量"+freeSpace); //那么,文件的已用空间就可以得到计算 long useSpace = totalSpace-freeSpace; System.out.println("剩余容量:"+useSpace); //获取文件名称 String name = file.getName(); System.out.println(name); //获取文件中内容字节数 long length = file.length(); System.out.println(length); //获取文件最后一次修改的时间 long l = file.lastModified(); //这里返回的是毫秒值,转换成年月日格式 SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String format = dateFormat.format(new Date(l)); System.out.println(format); } }public String[] list():获取指定目录下的所有文件或者文件夹的名称数组 public File[] listFiles():获取指定目录下的所有文件或者文件夹的File数组
例如通过代码获得下列文件名
package org.westos.demo2; import java.io.File; public class MyTest2 { public static void main(String[] args) { File file = new File("E:\\tupian\\"); //获取此目录下所有文件或文件夹的字符串对象数组 String[] list = file.list(); //遍历 for (String s : list) { System.out.println(s); } System.out.println("-----------"); //获取此目录下所有文件或文件夹的File对象数组 //比较灵活,可继续对文件或文件夹进行操作,一般使用它 File[] files = file.listFiles(); //遍历 for (File file1 : files) { System.out.println(file1); } } }结果:
返回字符串数组还是file数组根据个人需求,但一般返回file数组,便于之后对文件的操作
(6)文件过滤器 public String[] list(FilenameFilter filter) public File[] listFiles(FilenameFilter filter)
结合文件过滤器和封装数组就可获得符合条件的文件或文件夹名 例如只想获得下列路径中后缀名是.jpg的文件
package org.westos.demo2; import java.io.File; import java.io.FilenameFilter; public class MyTest2 { public static void main(String[] args) { File file = new File("E:\\tupian\\"); //将此目录下符合条件的文件或文件夹放入数组中 File[] files = file.listFiles(new FilenameFilter() { //过滤条件:只放入以.jpg为后缀名的文件 @Override public boolean accept(File dir, String name) { //dir代表父路径 //name代表文件名的字符串形式 File file1 = new File(dir, name); if(file1.isFile()&&file1.getName().endsWith(".jpg")){ return true; }else { return false; } } }); //遍历 for (File file1 : files) { System.out.println(file1); } } }public File[] listFiles(FileFilter filter),这个方法跟上一个方法类似,只不过不需要在封装父路径和路径名,达到的效果是一样的
package org.westos.demo2; import java.io.File; import java.io.FileFilter; public class MyTest2 { public static void main(String[] args) { File file = new File("E:\\tupian\\"); //将此目录下符合条件的文件或文件夹放入数组中 File[] files = file.listFiles(new FileFilter() { @Override public boolean accept(File pathname) { if(pathname.isFile()&&pathname.getName().endsWith(".jpg")){ return true; }else{ return false; } } }); //遍历 for (File file1 : files) { System.out.println(file1); } } }总结一下,要想对单个文件或文件夹进行操作,必须先将文件或文件夹封装成对象,然后再通过方法实现需求;要向对多个文件同时操作,就要先将这些文件放入数组,然后在遍历数组的过程中实现需求,这里就需要文件过滤器帮助我们