1.File类
1.1File类的理解
* File类的使用 java.io.file
* 1.File类的一个对象,代表一个文件或一个文件目录(文件夹)
* 2.File是声明在java.io包下
* 3.File类中的方法只能实现对文件或文件目录的创建、删除、重命名、修改时间的
* 并未涉及到写入或读取文件内容的操作。读取或写入文件内容要使用IO流来完成
1.2File类的实例化
1.2.1常用构造器
* File(String filePath)
* File(String parentPath,String childPath)
* File(File parentPath,String childPath)
//构造器1
//相对于当前module
File file = new File("hello.txt");
File file2 = new File("E:\JAVAee项目\IDEA\Java_Base\he.txt");
System.out.println(file);
System.out.println(file2);
//构造器2
File file3 = new File("E:\JAVAee项目\IDEA","Java_Base");
System.out.println(file3);
//构造器3
File file4 = new File(file3,"hi.txt");
System.out.println(file4);
1.2.2路径的分类
* 路径问题:
* 1.相对路径:相较于某个路径下,指明的路径
* 2.绝对路径:包含盘符在内的文件或文件目录的路径
说明:
IDEA:
如果大家开发使用JUit中的单元测试方法测试,相对路径为当前module
如果使用main()方法测试,相对路径为当前Project下
Eclipse中:
不管使用单元测试还是main()测试,相对路径都是当前的project下。
1.1.3路径分隔符
* 3.路径分隔符:win和dos中默认使用“”,linux下默认使用“/”
* public static final String separator。根据操作系统动态选择
File file3 = new File("E:"+File.separator+"\JAVAee项目\IDEA\Java_Base\he.txt");
1.3File类的常用方法
File file1 = new File("file\hello.txt");
File file2= new File("d:\io\hi.txt");
//1.获取绝对路径
System.out.println(file1.getAbsolutePath());
//2.获取路径
System.out.println(file1.getPath());
//3.获取名称
System.out.println(file1.getName());
//4.获取上层文件目录路径。若无返回null
System.out.println(file1.getParent());
//5.获取文件长度,字节数。不能获取目录的长度。
System.out.println(file1.length());
//6.获取文件最后一次修改的时间,毫秒值
System.out.println(file1.lastModified());
//7.如下两个方法适用于文件目录
File file3 = new File("E:\DownLoad\Google");
//获取文件名
String[] list = file3.list();
for (String s:list) {
System.out.println(s);
}
System.out.println();
//获取文件
File[] files = file3.listFiles();
for(File file : files){
System.out.println(file);
}
File file1 = new File("file\hello.txt");
File file2 = new File("D:\io\hi.txt");
boolean result = file1.renameTo(file2);
System.out.println(result);
File file1 = new File("file\hello.txt");
file1 = new File("hello.txt");
//1.判断是否是文件目录
System.out.println(file1.isDirectory());
//2.判断是否是文件
System.out.println(file1.isFile());
//3.判断是否存在
System.out.println(file1.exists());
//4.判断是否可读
System.out.println(file1.canRead());
//5.判断是否可写
System.out.println(file1.canWrite());
//6.判断是否隐藏
System.out.println(file1.isHidden());
//1.文件的创建
File file = new File("file//hi.txt");
if(!file.exists()){
file.createNewFile();
System.out.println("创建成功!");
}
else{
file.delete();
System.out.println("文件已删除!");
}
//2.文件目录的创建
File file1 = new File("d:\io\io1");
if(!file1.exists()){
if(file1.mkdir()){
System.out.println("创建成功1!");
}
}
File file2 = new File("d:\io\io3\io4");
if(!file2.exists()){
if(file2.mkdirs()){
System.out.println("创建成功2!");
}
}
1.4文件练习
1.创建一个与file同目录下的另外一个文件,命名为:haha.txt
File file = new File("d:\io\io1\hello.txt");
File file1 = new File(file.getParent(),"haha.txt");
if(!file1.exists()){
if(file1.createNewFile()){
System.out.println("创建成功!");
}
}
2.判断指定目录下是否有后缀名为.jpg的文件,如果有,就输出该文件名称
//1.得到该文件目录下的所有文件名集合
File file = new File("d:\io\io1");
String[] nameList = file.list();
//2.使用endWith()方法判断
for(String name : nameList){
if(name.endsWith(".jpg")){
System.out.println(name);
}
}
3.遍历指定文件目录所有文件名称 包括子文件目录中的文件
3.1计算指定目录所占空间的大小
3.2删除指定文件目录及其下的所有文件
@Test
public void test03(){
//遍历指定文件目录所有文件名称 包括子文件目录中的文件
//递归
File file1 = new File("d:\io\io1");
readDir(file1);
//计算指定目录所占空间的大小
System.out.println(length);
//删除指定文件目录及其下的所有文件
deleteDir(file1);
}
public void readDir(File file){
if(file.isFile()){
length += file.length();
return;
}
else{
File[] files = file.listFiles();
for(File file1:files){
if(file1.isFile()){
length+=file1.length();
}
else{
readDir(file1);
}
}
}
}
public void deleteDir(File file){
if(file.isFile()){//单个文件 直接删除
file.delete();
}
else{
File[] files = file.listFiles();
for(File file1:files){//删除该文件夹下的所有文件
if(file1.isFile()){
file1.delete();
}
else{
deleteDir(file1);
}
}
file.delete();//删除该文件夹
}
}