javaAPI_IO流基础_File类


IO流基础_File类

1.File类概述
File表示的是文件和目录(文件夹)路劲名的抽象表示形式。

2.构造方法[*****]
public File(String pathname):按照一个路径得到一个File对象
public File(String parent,String child):根据一个目录(或者是文件夹)和目录下面的一个字文件夹得到一个File对象
public File(File parent,String child):根据一个File对象和一个字文件夹得到一个File对象

代码测试:
public static void main(String[] args) {
//构造方法1创建
File file = new File("C:\\Users\\Administrator\\Desktop\\数据模板.txt");
//构造方法2创建
File file1 = new File("C:\\Users\\Administrator\\Desktop", "数据模板.txt");
//构造方法3创建
File file2 = new File("C:\\Users\\Administrator\\Desktop");
File file3 = new File(file2, "数据模板.txt");

}


3.File类的常用功能[*****]

(1).创建功能:[注意要明确是创建文件还是创建文件夹]
public boolean createNewFile():创建文件,如果存在这样的文件,那么就不创建了。(如果不标明具体的路劲,默认是在当前项目路劲)
public boolean mkdir():创建文件夹,如果存在这样的文件夹,那么就不创建了。
public boolean mkdirs():创建多级文件夹

代码测试:
public static void main(String[] args) throws IOException {
//创建文件,文件C:\\Users\\Administrator\\Desktop这一个时候以存在
File file = new File("C:\\Users\\Administrator\\Desktop\\FileTest");
System.out.println("创建文件夹:"+file.mkdir());
//创建文件
//注意事项:如果说你要在一个目录下面创建一个文件,那么应该先确保这一个目录(或者是文件夹)的存在
File file1 = new File("C:\\Users\\Administrator\\Desktop\\FileTest\\Test.txt");
System.out.println(file1.createNewFile());
//创建多级文件夹,1文件夹下2文件夹
File file2 = new File("C:\\Users\\Administrator\\Desktop\\FileTest\\1\\2");
System.out.println("创建文件夹:"+file2.mkdirs());
}


(2).删除功能
public boolean delete():删除文件或者是文件夹

注意:
A:java中的删除是不走回收站的
B:要删除一个文件夹,在该文件夹下面不能够有文件或者是文件夹。

代码测试:
public static void main(String[] args) throws IOException {
//不写具体的路劲就是在项目路劲下面
File file = new File("a.txt");
System.out.println(file.createNewFile());
//删除文件
System.out.println(file.delete());
}

(3).重命名功能
public boolean renameTo(File dest):重命名文件名称
如果路劲名相同:那么就是重命名
如果说路劲名不同:那么就是改名并剪切

注意:
相对路劲和绝对路劲
路劲以盘符开始:绝对路劲
路劲不以盘符开始:相对路劲

代码测试:
public static void main(String[] args) throws IOException {
//不写具体的路劲就是在项目路劲下面
File file = new File("a.txt");
File file1 = new File("b.txt");
System.out.println(file.renameTo(file1));
}

(4).判断功能
public boolean isDirectory():判断是否是目录
public boolean isFile():判断是否是文件
public boolean exists():判断是否存在
public boolean canRead():判断是否可读
public boolean canWrite():判断是否可写
public boolean isHidden():判断是否隐藏


(5).File类的获取功能
public String getAbsolutePath():获取绝对路劲
public String getPath():获取相对路劲
public String getName():获取文件名称
public long length():获取长度(字节)(这一个主要的作用就是上传文件的时候可以查看文件的大小)
public long lastModified():获取文件上一次修改时间(毫秒值)

//高级功能
public String[] list():获取指定目录下面的所有文件或者是文件夹的名称数组
public File[] listFiles():获取指定目录下面的所有文件或者是文件夹的File数组。


4.File类相关操作

判断E盘目录下是否有后缀名为.jpg的文件,如果有,就输出此文件名称

(1).实现方法1:
分析:
A:封装e判断目录
B:获取该目录下所有文件或者文件夹的File数组
C:遍历该File数组,得到每一个File对象,然后判断
D:是否是文件
是:继续判断是否以.jpg结尾
是:就输出该文件名称
否:不搭理它
否:不搭理它

代码实现:
public static void main(String[] args) {
// 封装e判断目录
File file = new File("e:\\");

// 获取该目录下所有文件或者文件夹的File数组
File[] fileArray = file.listFiles();

// 遍历该File数组,得到每一个File对象,然后判断
for (File f : fileArray) {
// 是否是文件
if (f.isFile()) {
// 继续判断是否以.jpg结尾
if (f.getName().endsWith(".jpg")) {
// 就输出该文件名称
System.out.println(f.getName());
}
}
}
}

(2).实现方法2:
判断E盘目录下是否有后缀名为.jpg的文件,如果有,就输出此文件名称
A:先获取所有的,然后遍历的时候,依次判断,如果满足条件就输出。
B:获取的时候就已经是满足条件的了,然后输出即可。

要想实现这个效果,就必须学习一个接口:文件名称过滤器
public String[] list(FilenameFilter filter)
public File[] listFiles(FilenameFilter filter)

代码实现:
public static void main(String[] args) {
// 封装e判断目录
File file = new File("e:\\");
// 获取该目录下所有文件或者文件夹的String数组
// public String[] list(FilenameFilter filter)
String[] strArray = file.list(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
return new File(dir, name).isFile() && name.endsWith(".jpg");
}
});

// 遍历
for (String s : strArray) {
System.out.println(s);
}
}


批量修改文件名称[对于文件名相同或者是相似的名称操作]

需求:把E:\评书\三国演义下面的视频名称修改为
00?_介绍.avi

思路:
A:封装目录
B:获取该目录下所有的文件的File数组
C:遍历该File数组,得到每一个File对象
D:拼接一个新的名称,然后重命名即可。

代码实现:
public static void main(String[] args) {
// 封装目录
File srcFolder = new File("E:\\评书\\三国演义");

// 获取该目录下所有的文件的File数组
File[] fileArray = srcFolder.listFiles();

// 遍历该File数组,得到每一个File对象
for (File file : fileArray) {
// System.out.println(file);
// E:\评书\三国演义\三国演义_001_[评书网-今天很高兴,明天就IO了]_桃园三结义.avi
// 改后:E:\评书\三国演义\001_桃园三结义.avi
String name = file.getName(); // 三国演义_001_[评书网-今天很高兴,明天就IO了]_桃园三结义.avi

int index = name.indexOf("_");
String numberString = name.substring(index + 1, index + 4);
int endIndex = name.lastIndexOf('_');
String nameString = name.substring(endIndex);
String newName = numberString.concat(nameString); // 001_桃园三结义.avi
// System.out.println(newName);
File newFile = new File(srcFolder, newName); // E:\\评书\\三国演义\\001_桃园三结义.avi
// 重命名即可
file.renameTo(newFile);
}
}

 

posted @ 2019-01-07 21:56  德墨特尔  阅读(217)  评论(0编辑  收藏  举报