简介:
- Java文件类以抽象的方式代表文件名和目录路径名。该类主要用于文件和目录的创建、文件的查找和文件的删除等
- File对象代表磁盘中实际存在的文件和目录
代码演示:
1.构造方法
File(String pathname):根据一个路径得到File对象
File(String parent, String child):根据一个目录和一个子文件/目录得到File对象
File(File parent, String child):根据一个父File对象和一个子文件/目录得到File对象
File类的构造方法
1. File file = new File("E:\\20151020\\day02\\day02总结.java") ;
2. File file2 = new File("E:\\20151020\\day02" , "day02总结.java") ;
3. File file3 = new File("E:\\20151020\\day02") ;
File file4 = new File(file3 , "day02总结.java") ;
package org.westo.demo2;
import java.io.File;
import java.io.IOException;
/**
* @Author: Administrator
* @CreateTime: 2019-01-15 11:00
*/
public class MyDemo {
public static void main(String[] args) throws IOException {
//封装文件对文件进行操作
//相对路径 不带有盘符号的路径
// 绝对路径 带有盘符号的完整路径
//采用相对路径生成的文件,在工程的根目录下
File file = new File("a.txt");
file.createNewFile();
//采用绝对路径生成的文件
File file2 = new File("E:\\文件LY\\WestOS_SE\\20190115-JavaSE-课件\\代码\\20190115-MyJavaDemo-File类-上午\\ee.txt");
file2.createNewFile();
//封装目录
// File(File parent, String child)
File fu = new File("D:\\abc");
File file2 = new File(fu, "b.txt");
// File(String parent, String child)
// 根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。
File file3 = new File("D:\\abc", "b.txt");
}
}
结果:
实例: 如果D:/myword目录中没有名称为word的文件,File类对象可通过调用createNewFile()方法创建一个名称为word.txt的文件;如果word.txt文件存在,可以通过文件对象的delete()方法将其删除。
import java.io.File;
import java.io.IOException;
public class FileTest {
public static void main(String[] args) {
File file = new File("D:\\test","test6.txt");
if(file.exists()){
file.delete() ;
System.out.println("文件已删除!");
}else {
try {
file.createNewFile() ;
System.out.println("文件已创建!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
2.创建目录(单级目录,多级目录)
package org.westos.demo3;
import java.io.File;
/**
* @Author: Administrator
* @CreateTime: 2019-01-15 11:10
*/
public class MyDemo {
public static void main(String[] args) {
File file = new File("D:\\myTest");
//创建目录,第一次创建,如果创建成功返回true,如果目录已经存在,则不会重复创建,返回false
boolean b = file.mkdir(); //只能创建单级目录
System.out.println(b);
System.out.println("--------------------------------------");
File file1 = new File("D:\\myaaa\\bbb\\cccc");
boolean mkdirs = file1.mkdirs();//创建多级目录
System.out.println(mkdirs);
}
}
3.重命名
package org.westos.demo5;
import java.io.File;
/**
* @Author: Administrator
* @CreateTime: 2019-01-15 11:34
*/
public class MyTest {
public static void main(String[] args) {
//重命名:传入的文件路径和源文件路径一样,则是重命名
File file = new File("ee.txt");
boolean b = file.renameTo(new File("e.txt")); //返回值是是否重命名成功
System.out.println(b);
System.out.println("-----------------------------------");
File file = new File("f.txt");
//重命名:如果调用renameTo(new File("D:\rr.txt")); 传入的文件路径和源文件路径不一样,则是剪切重命名
boolean b = file.renameTo(new File("D:\\f.txt"));
System.out.println(b);
}
}
4.删除文件和目录
package org.westos.dmeo4;
import java.io.File;
/**
* @Author: Administrator
* @CreateTime: 2019-01-15 11:15
*/
public class MyDemo5 {
public static void main(String[] args) {
File file = new File("a.txt");
//删除文件 返回值表示是否删除成功
boolean b = file.delete();
System.out.println(b);
//删除目录
File file1 = new File("D:\\myTest");
//只能删除空目录
//非空目录,则无法直接删除,如果要删多级目录,可以使用递归删除
file1.delete();
}
}
5.有关于获取的方法
public String getAbsolutePath ():获取绝对路径
public String getPath ():获取相对路径
public String getParent () 返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回 null。
public File getParentFile () 返回此抽象路径名父目录的抽象路径名;如果此路径名没有指定父目录,则返回 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;
/**
* @Author: Administrator
* @CreateTime: 2019-01-15 13:40
*/
public class MyDemo2 {
public static void main(String[] args) throws IOException {
//有关于获取的方法
File file = new File("a.txt");
// file.createNewFile();
//获取文件名
String name = file.getName();
System.out.println(name);
//获取文件大小
long length = file.length();
System.out.println(length);
//----------------------------
File file1 = new File("D:\\test.exe");
//返回的是绝对路劲的字符串表现形式
String absolutePath = file1.getAbsolutePath();
System.out.println(absolutePath);
//返回的是文件形式
File file2 = file1.getAbsoluteFile();
System.out.println(file2.toString());
//----------------------------
File file3 = new File("b.txt");
//获取相对路径
String path = file3.getPath();
System.out.println(path);
//------------------------------
File file4 = new File("D:\\", "test.exe");
//获取父路径字符串形式
String parent = file4.getParent();
System.out.println(parent);
//返回的是文件形式
File parentFile = file4.getParentFile();
System.out.println(parentFile.toString());
//------------------------------
File file = new File("D:\\");
//获取该空间的总容量,单位是字节
long totalSpace = file.getTotalSpace();
System.out.println(totalSpace/1024/1024/1024+"G");
//获取该空间的剩余容量
long freeSpace = file.getFreeSpace();
System.out.println(freeSpace/ 1024.0 / 1024.0 / 1024.0 + "G");
//------------------------------
//获取文件的最后一次修改时间
File file = new File("D:\\微信");
long time = file.lastModified();
Date date = new Date(time);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String format = simpleDateFormat.format(date);
System.out.println(format);
//------------------------------
// public String[] list ():获取指定目录下的所有文件或者文件夹的名称数组
// public File[] listFiles ():获取指定目录下的所有文件或者文件夹的File对像数组
File file1 = new File("E:\\我的图片和音乐\\图片");
String[] list = file1.list();
for (String s : list) {
System.out.println(s);
}
File file2 = new File("E:\\我的图片和音乐\\图片");
File[] files = file2.listFiles();
for (File file : files) {
System.out.println(file.getName());
}
}
}
6.关于判断的方法
package org.westos.demo3;
import java.io.File;
/**
* @Author: Administrator
* @CreateTime: 2019-01-15 13:58
*/
public class MyDemo {
public static void main(String[] args) {
//关于判断的方法
File file = new File("a.txt");
//判断此文件是否存在
boolean exists = file.exists();
System.out.println(exists);
//判断是否是文件
boolean file1 = file.isFile();
System.out.println(file1);
//判断是否是目录
boolean directory = file.isDirectory();
System.out.println(directory);
File file = new File("a.txt");
//判断文件是否可读
boolean b = file.canRead();
//判断文件是否可写
boolean b1 = file.canWrite();
//判断文件是否隐藏
boolean hidden = file.isHidden();
// windows 下的所有文件都有可执行权限。要测试这个功能只能用 linux、unix
//判断文件是否是可执行文件
// boolean b2 = file.canExecute();
}
}
有关文件的案例
A:
案例演示:
需求:判断E:\我的图片和音乐\图片 盘目录下是否有后缀名为.jpg的文件,如果有,就输出该文件名称
public class MyDemo {
public static void main(String[] args) {
File file = new File("E:\\我的图片和音乐\\图片");
File[] files = file.listFiles();
for (File f : files) {
if(f.isFile()&&f.getName().endsWith(".jpg")){
System.out.println(f.getName());
}
}
}
}
B:
案例演示:
需求:判断E:\我的图片和音乐\图片 盘目录下是否有后缀名为.jpg的文件,后缀名改成 .png
public class MyDemo2 {
public static void main(String[] args) {
File file = new File("E:\\我的图片和音乐\\图片");
//获取该目录下所有的文件和文件夹
File[] files = file.listFiles();
for (File f : files) {
if (f.isFile() && f.getName().endsWith(".jpg")) {
//修改文件名
String name = f.getName();
String newFileName = name.substring(0, name.lastIndexOf("."));
f.renameTo(new File(f.getParent(), newFileName + ".png"));
}
}
}
}