类 File
文件和目录路径名的抽象表示形式。
构造方法:
public File(String pathname) //根据一个路径得到File对象
public File(String parent, String child) //根据一个目录和一个子文件(子目录)得到File对象
public File(File parent , String child) //根据一个父File对象 和 一个子文件(子目录)得到File对象
范例:
package cn.itcast_01;
import java.io.File;
/*
* File 类
* 构造方法:
public File(String pathname) //根据一个路径得到File对象
public File(String parent, String child) //根据一个目录和一个子文件(子目录)得到File对象
public File(File parent , String child) //根据一个父File对象 和 一个子文件(子目录)得到File对象
*/
public class FileDemo {
public static void main(String[] args) {
//public File(String pathname) //根据一个路径得到File对象
File file = new File("D:\\demo\\a.txt"); //只是一个抽象的指向对象(不负责创建等其他功能)
//public File(String parent, String child) //根据一个目录和一个子文件(子目录)得到File对象
File file2 = new File("D:\\demo","a.txt");
//public File(File parent , String child) //根据一个父File对象 和 一个子文件(子目录)得到File对象
File file3 = new File("E:\\demo");
File file4 = new File(file3,"a.txt");
//以上三种方式效果一样
}
}
成员方法:
创建功能:
public boolean createNewFile() //创建一个新文件,
如果存在就不创建了
public boolean mkdir() // 创建一个文件夹,如果存在就不创建了
public boolean mkdirs() // 创建一个文件夹,并创建不存在的父文件夹
注意:如果创建文件或文件夹没有写盘符路径,就会默认在项目路径下。
删除功能:
public boolean delete() //
注意:要删除一个文件夹,该文件夹内不能包含文件或者文件夹
重命名功能
public boolean renameTo(File dest)
注意:如果路径名相同,就是改名
如果路径名不同,就是改名并剪切。
范例:
package cn.itcast_02;
import java.io.File;
import java.io.IOException;
/*
* File
* 创建功能:
public boolean createNewFile() //创建一个新文件
public boolean mkdir() // 创建一个文件夹
public boolean mkdirs() // 创建一个文件夹,并创建不存在的父文件夹
删除功能:
public boolean delete()
重命名功能
public boolean renameTo(File dest)
*/
public class FileDemo {
public static void main(String[] args) throws IOException { //这里会需要抛出异常
//需求:在G盘JavaWorkPlace目录下创建一个文件夹demo
//public boolean mkdir() // 创建一个文件夹
File file = new File ("G:\\JavaWorkPlace\\demo");
System.out.println("mkdir:"+file.mkdir());
//需求:在G盘JavaWorkPlace目录下创建一个a.txt文件
//public boolean createNewFile() //创建一个新文件
File file2 = new File("G:\\JavaWorkPlace\\demo\\a.txt");
System.out.println(file2.createNewFile()); //这里会需要抛出异常
//需求:在G盘JavaWorkPlace目录下test目录下创建一个文件b.txt
File file3 = new File("G:\\JavaWorkPlace\\test");
System.out.println(file3.mkdir());
File file4 = new File("G:\\JavaWorkPlace\\test\\b.txt");
System.out.println(file4.createNewFile());
//需求:在G盘JavaWorkPlace目录下test2目录下创建aaa目录
File file5 = new File("g:\\JavaWorkPlace\\test2\\aaa");
System.out.println(file5.mkdirs());
//需求:删除G盘JavaWorkPlace目录下test目录下创建一个文件b.txt
File file6 = new File("G:\\JavaWorkPlace\\test\\b.txt");
System.out.println(file6.delete());
//需求:重命名G盘JavaWorkPlace目录下test2目录下aaa目录成bbb
File newFile = new File("g:\\JavaWorkPlace\\test2\\bbb"); //注意,要先指向位置
System.out.println(file5.renameTo(newFile));
}
}
判断功能:
public boolean isDirectory() //判断是否是文件夹
public boolean isFile() //判断是否是文件
public boolean exists() //判断是否存在
public boolean canRead() //判断是否可读
public boolean canWrite() //判断是否可写
public boolean isHidden() //判断是否隐藏
范例:
package cn.itcast_03;
import java.io.File;
/*
* 判断功能:
public boolean isDirectory() //判断是否是文件夹
public boolean isFile() //判断是否是文件
public boolean exists() //判断是否存在
public boolean canRead() //判断是否可读
public boolean canWrite() //判断是否可写
public boolean isHidden() //判断是否隐藏
*/
public class FileBooleanDemo {
public static void main(String[] args) {
//创建文件对象
File file = new File("a.txt");
//public boolean isDirectory() //判断是否是文件夹
System.out.println(file.isDirectory()); //false
System.out.println(file.isFile()); //true
}
}
获取功能:
基本获取功能:
public String getAbsoluePath() //获取绝对路径
public String getPath() //获取相对路径
public String getName() //获取名称
public long length() //获取长度。字节数
public long lastModified() //获取最后一次的修改时间,返回毫秒值
范例:
package cn.itcast_04;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
/*
* 获取功能:
基本获取功能:
public String getAbsoluePath() //获取绝对路径
public String getPath() //获取相对路径
public String getName() //获取名称
public long length() //获取长度。字节数
public long lastModified() //获取最后一次的修改时间,返回毫秒值
*/
public class FileGetDemo {
public static void main(String[] args) {
//创建文件对象
File file = new File("demo\\test.txt");
//public String getAbsoluePath() //获取绝对路径
System.out.println(file.getAbsolutePath()); //G:\JavaWorkPlace\page40_File\demo\test.txt
//public String getPath() //获取相对路径
System.out.println(file.getPath()); //demo\test.txt
//public String getName() //获取名称
System.out.println(file.getName()); //test.txt
//public long length() //获取长度。字节数
System.out.println(file.length()); //5
//public long lastModified() //获取最后一次的修改时间,返回毫秒值
System.out.println(file.lastModified()); //1487229623508
//解析时间
Date d = new Date(1487229623508L);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String s = sdf.format(d);
System.out.println(s); //2017-02-16 15:20:23
}
}
高级获取功能:
public String[ ] list() //返回一个字符串数组,获取指定目录下的所有文件或者文件夹名称数组。
public File[ ] listFiles()//返回一个抽象路径名数组,获取指定目录下的所有文件或者文件夹的File数组
范例:
package cn.itcast_04;
import java.io.File;
/*
* public String[ ] list() //返回一个字符串数组,获取指定目录下的所有文件或者文件夹名称数组。
public File[ ] listFiles()//返回一个抽象路径名数组,获取指定目录下的所有文件或者文件夹的File数组
*/
public class FileGetDemo02 {
public static void main(String[] args) {
//指定一个目录
File file = new File("g:\\");
// * public String[ ] list() //返回一个字符串数组,获取指定目录下的所有文件或者文件夹名称数组。
String[] array = file.list();
for(String s : array){
System.out.println(s);
}
/* 返回结果:
$RECYCLE.BIN
JavaWorkPlace
SteamLibrary
System Volume Information
Virtual Machines
VXdata
筑翎工作*/
//public File[ ] listFiles()//返回一个抽象路径名数组,获取指定目录下的所有文件或者文件夹的File数组
File[] fileArray = file.listFiles();
for(File s : fileArray){
System.out.println(s);
}
/* 返回结果:
g:\$RECYCLE.BIN
g:\JavaWorkPlace
g:\SteamLibrary
g:\System Volume Information
g:\Virtual Machines
g:\VXdata
g:\筑翎工作*/
}
}
练习:判断G盘目录下是否有后缀名为.jpg的文件,如果有,就输出次文件名称
方式思路一:先获取所有的,然后遍历的时候,依次判断,如果满足条件就输出
package cn.itcast_05;
import java.io.File;
/*
* 练习:判断G盘目录下是否有后缀名为.jpg的文件,如果有,就输出次文件名称
* 思路:
* A / 封装G判断目录
* B / 获取该目录下所有文件或者文件家的File数组
* C / 遍历该数组,得到每一个File对象,
* D / 是否是文件
* 是:继续判断是否以.jpg结尾
* 是:输出该文件
* 否:不搭理
* 否:不搭理
*/
public class FileTest_01 {
public static void main(String[] args) {
//创建文件对象
File file = new File("g:\\");
//获取该目录下所有文件或者文件家的File数组
File[] fileArray = file.listFiles();
//遍历该数组,得到每一个File对象,
for (File f : fileArray){
//判断是不是文件
if(f.isFile()){
//判断是不是.jpg结尾
if (f.getName().endsWith(".jpg")){
//输出该文件名称
System.out.println(f.getName());
}
}
}
}
}
方式思路二:获取的收就已经满足条件了,然后输出
使用文件过滤器
接口 FilenameFilter
范例:
package cn.itcast_05;
import java.io.File;
import java.io.FilenameFilter;
/*
* 练习:判断G盘目录下是否有后缀名为.jpg的文件,如果有,就输出次文件名称
* 用接口FilenameFilter
public String[] list(FilenameFilter filter)
public File[] listFiles(FilenameFilter filter)
* 思路:
* A / 封装G判断目录
* B / 获取该目录下所有文件或者文件家的File数组
* C / 遍历该数组,得到每一个File对象,
* D / 是否是文件
* 是:继续判断是否以.jpg结尾
* 是:输出该文件
* 否:不搭理
* 否:不搭理
*/
public class FileTest_3 {
public static void main(String[] args) {
//创建文件对象
File file = new File("g:\\");
//获取该目录下所有文件或者文件夹的String数组
String[] strArray = file.list(new FilenameFilter(){
@Override
public boolean accept(File dir, String name) { //accept是实现类
//在这个位置进行条件判断
File file = new File(dir,name);
boolean flag = file.isFile();
boolean flag2 = name.endsWith(".jpg");
return flag && flag2;
}
});
//遍历
for(String s: strArray){
System.out.println(s);
}
}
}
练习02:
package cn.itcast_06;
import java.io.File;
/*
* 批量修改文件名称
* F:\IDM\MySQL
* 需求:把这个下面的视频名称修改为00?_介绍.wmv
* 思路:
* A / 封装目录
* B / 遍历该File数组,得到每一个File对象
* C / 拼接一个新名称,然后重命名
*/
public class FileTest_01 {
public static void main(String[] args) {
//封装目录
File srcFolder = new File("F:\\IDM\\MySQL");
//获取该目录下文件的File数组
File[] fileArray = srcFolder.listFiles();
//遍历该File数组,得到每一个File对象
for (File file : fileArray){
//F:\IDM\MySQL\三通it学院-www.santongit.com-050-动力节点-MYSQL视频-练习题.wmv
//改后:F:\IDM\MySQL\050-动力节点-MYSQL视频-练习题.wmv
String name = file.getName();
int startIndex = name.indexOf("0");
String newName = name.substring(startIndex);
System.out.println(newName);
File newFile = new File(srcFolder,newName);
//重名即可
file.renameTo(newFile);
}
}
}