JavaEE-19-Java中的File类

 我们要想实现IO的操作,就必须知道硬盘上文件的表现形式。

而Java就提供了一个类File供我们使用。

File:文件和目录(文件夹)路径名的抽象表示形式

构造方法:

  File(String pathname):根据一个路径得到File对象

  File(String parent,String child):根据一个目录和子文件得到File对象

  File(File parent,String child):根据一个父File对象和一个子文件得到File对象

  注意:上面有说明File对象只是文件和目录的抽象表现形式,所以即使我们创建了File对象,但我们也是看不到它的。

     此时,我们就要使用到File的创建功能,只有创建它才能真实存在。

创建功能:

  public boolean createNewFile():创建文件,如果不存在就创建且返回true,如果已经存在则不创建且返回false。

    注意:要想在目录下创建文件,前提是该目录必须存在,所以要先创建文件夹,再创建文件。

  public boolean mkdir():创建文件夹,如果不存在就创建且返回true,如果已经存在则不创建且返回false。

  public boolean mkdirs():创建文件夹,如果父文件夹不存在,会自动帮其创建,适合一次创建多级文件夹。

1     public static void main(String[] args) throws IOException {
2         File file=new File("d:\\YY");//创建File对象
3         file.mkdirs();//创建文件夹
4         File file2=new File("d:\\YY\\yy.txt");//创建File对象
5         file2.createNewFile();//创建文件夹下的文件
6     }

  注意:创建文件的时候会抛出异常,该异常属于编译期异常,必须处理后代码才能运行。

 

 删除功能:

  public boolean delete():删除文件和文件夹。

    注意:1.Java中的删除不走回收站;

       2.如果要删除的文件夹中有内容,那么将无法直接删除该文件夹;

重命名功能:

  public boolean renameTo(File dest):如果两个File对象路径一致,会直接将名称进行修改。

       如果路径不同,会先进行文件名修改,再将该文件剪切到新的File对象路径下。

判断功能:

  public boolean isDirectory():判断是否为目录

  public boolean isFile():判断是否为文件

  public boolean exists():判断是否存在

  public boolean canRead():判断是否可读

  public boolean canWrite():判断是否可写

  public boolean isHidden():判断是否隐藏

获取功能:

  public String getAbsolutePath():获取绝对路径

  public String getPath():获取相对路径

  public String getName():获取文件的名称

  public long length():获取文件内容的长度(字节数)

  public long lastModified():获取最近一次修改的时间(毫秒值)

高级获取功能:

  public String[] list():获取指定目录下的所有文件或者文件夹的名称(String)数组

  public File[] listFiles():获取指定目录下的所有文件或者文件夹的File数组

示例1:查询D盘根目录下所有文件或文件夹的名称(包括隐藏的和受系统保护的文件)

1 public class FileDemo {
2     public static void main(String[] args) {
3         File file=new File("d:\\");
4         String[] strArray=file.list();
5         for(String s:strArray) {
6             System.out.println(s);
7         }
8     }
9 }

  注意:list()返回的String对象数组,listFiles()返回的是File对象数组。

     如果只想得到文件名称,使用第一种方法即可。如果想要得到更多的信息(名称、绝对路径),就需要使用第二种方法。

示例2:查询D盘根目录下是否有jpg文件,如果有就输出它的名称。

 1 public class FileDemo {
 2     public static void main(String[] args) {
 3         File file=new File("d:\\");
 4         
 5         File[] fileArray=file.listFiles();
 6         for(File f:fileArray) {
 7             if(f.isFile()) {    //判断是否为文件
 8                 if(f.getName().endsWith(".jpg")) {  //判断后缀名
 9                     System.out.println(f.getName());//输出该文件
10                 }
11             }
12         }
13     }
14 }

示例3:以上示例是使用File对象来操作的,但我们求的是文件的名称,是可以直接使用String对象来操作。

 1 public class FileDemo2 {
 2     public static void main(String[] args) {
 3         File file=new File("d:\\");
 4         
 5         String[] strArray=file.list(new FilenameFilter() {  //文件过滤器接口FilenameFilter
 6             public boolean accept(File dir, String name) {
 7                 File file=new File(dir, name);
 8                 boolean flag=file.isFile();
 9                 boolean flag2=name.endsWith(".jpg");
10                 return flag&&flag2;
11             }
12         });
13         for(String s:strArray) {
14             System.out.println(s);
15         }
16     }
17 }

示例4:批量重命名

 1 package cn.itcast_09;
 2 
 3 /*
 4  * 批量重命名
 5  * 示例:D:\评书\三国演义\三国演义_001_[评书网-今天很高兴,明天就IO了]_桃园三结义.avi
 6  * 截取后:D:\评书\三国演义\001_桃园三结义.avi
 7  */
 8 import java.io.File;
 9 
10 public class FileDemo {
11     public static void main(String[] args) {
12         File srcFolder = new File("D:\\评书\\三国演义");//封装目录
13 
14         File[] fileArray = srcFolder.listFiles();
15         for (File file : fileArray) {
16             String name = file.getName();// 获取原先的文件名
17 
18             int index = name.indexOf("_");//从_开始截取3位
19             String numberString = name.substring(index + 1, index + 4);
20 
21             int endIndex = name.lastIndexOf('_');// 从最后一个_开始截取后面所有内容
22             String nameString = name.substring(endIndex);
23 
24             String newName = numberString.concat(nameString);// 拼接两次截取的内容
25             File newFile = new File(srcFolder,newName);// 组合路径和新名字
26             file.renameTo(newFile);// 调用重新命名方法
27         }
28     }
29 }

 

posted @ 2020-12-17 17:46  benon  阅读(94)  评论(0编辑  收藏  举报