File类

mac2024-03-30  31

File

概述:文件和目录(文件夹)路径名的抽象表示形式路径的分类: 绝对路径:带有盘符号的路径 相对路径:没有带盘符号的路径,默认在根目录下构造方法 File(String pathname):根据一个路径得到File对象 File(String parent, String child):根据一个目录和一个子文件/目录得到File对象 File(File parent, String child):根据一个父File对象和子文件/目录得到File对象 package org.westos.demo2; import java.io.File; public class MyTest2 { public static void main(String[] args){ //通过路径得到对象 File file = new File("E:\\aaa\\"); //通过父类路径和子类名得到对象 File file1 = new File("E:\\", "aaa"); //通过父类对象和子类名得到对象 File file2 = new File("E:\\"); File file3 = new File(file2, "aaa"); } } 常用功能 (1)创建功能 public boolean creatNewFile():创建一个新文件,若存在,则不重复创建 public boolean mkdir():创建一个目录,若存在,则不创建,只能创建单层目录 public boolean mkdirs():创建一个目录,若存在,则不创建,用于创建单层或多层目录 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"); //在E盘创建文件aaa,返回值代表是否创建成功 boolean newFile = file.createNewFile(); System.out.println(newFile); //封装单层目录 File file1 = new File("E:\\aaa\\"); //创建单层目录,返回值代表是否创建成功 boolean mkdir = file1.mkdir(); System.out.println(mkdir); //封装多层目录 File file2 = new File("E:\\bbb\\ccc\\eee"); //创建多层目录,返回值代表是否创建成功 boolean mkdirs = file2.mkdirs(); System.out.println(mkdirs); } }

程序运行之前 第一次运行程序: 表明创建成功

第二次运行程序 表明创建失败,那是因为第一次创建时文件或文件下已经存在,第二次运行便不在重复创建 注意:若在封装时忘记写盘符号,则默认在根目录下

(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); } } }

总结一下,要想对单个文件或文件夹进行操作,必须先将文件或文件夹封装成对象,然后再通过方法实现需求;要向对多个文件同时操作,就要先将这些文件放入数组,然后在遍历数组的过程中实现需求,这里就需要文件过滤器帮助我们

最新回复(0)