File是文件和目录路径名的抽象表示形式。
构造方法
方法 | 描述 |
---|---|
public File(File parent, String child) | 根据parent抽象路径名和child路径名字符串创建一个新File实例 |
public File(String pathname) | 通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例 |
public File(String parent, String child) | 根据parent路径名字符串和child路径名字符串创建一个新File实例 |
public File(URL url) | 通过将给定的file: URL转换为一个抽象路径名来创建一个新的File实例 |
实例
public static void fileConstructionMethod() {
// public File(String pathname)
// 通过将给定路径名字符串转换为抽象路径名来创建一个新的File实例
File file1 = new File(pathName);
System.out.println(file1); //C:\Users\xxx\Desktop\exercise\test
// public File(String parent, String child)
// 根据parent路径名字符串和child路径名字符串创建一个新的File实例
File file2 = new File(parent, "test");
System.out.println(file2); //C:\Users\xxx\Desktop\exercise\test
//public File(File parent, String child)
// 根据parent抽象路径名和child路径名字符串创建一个新的File实例
File file3 = new File(file1, "test");
System.out.println(file3); //C:\Users\xxx\Desktop\exercise\test\test
}
创建方法
方法 | 描述 |
---|---|
public boolean createNewFile() throws IOException | 创建文件,如果存在这样的文件,就不创建了 |
public boolean mkdir() | 创建文件夹,如果存在这样的文件夹,就不创建了 |
public boolean mkdirs() | 创建文件夹,如果父文件夹不存在,会帮你创建出来 |
实例
public static void createMethod() {
//根据字符串形式的路径创建一个File对象
File file1 = new File(pathName);
boolean flg = false;
try {
//public boolean createNewFile() throws IOException
//创建文件,如果存在这样的文件,就不创建了
flg = file1.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(flg); // true
File file2 = new File(parent,"test1\\test\\test");
//public boolean mkdir()
//创建文件夹,如果存在这样的文件夹,就不创建了(如果你创建的文件夹上面的父类文件夹还没创建的情况下也是不会创建的)
flg = file2.mkdir();
System.out.println(flg); // false,如果你要创建的文件夹与已存在的文件重名也是创建不了的
File file3 = new File(parent,"test2\\test\\test");
// public boolean mkdirs()
// 创建文件夹,如果父文件夹不存在,会帮你创建出来
flg = file3.mkdirs();
System.out.println(flg); // true
}
注意事项:如果你创建文件或者文件夹忘了写盘符路径,那么默认在项目路径下;同一路径不能出现相同名称的文件和文件夹,这里的相同指的是文件的全名称(待后缀名)
重命名和删除功能
方法 | 描述 |
---|---|
public boolean renameTo(File dest) | 把文件重命名为指定的文件路径 |
public boolean delete() | 删除文件或者文件夹 |
实例
public static void renameAndDeleteMethod() {
// 根据字符串形式的路径创建一个文件夹
String parent = "C:\\Users\\hireny\\Desktop\\learning\\exercise" +
"\\day016";
File file = new File(parent ,"personalfilms");
// 创建文件夹
boolean flg = file.mkdir();
System.out.println("创建文件夹:"+flg);
try {
Thread.sleep(5000);
} catch(InterruptedException e) {
e.printStackTrace();
}
// 修改文件夹
File file3 = new File(parent, "personalmovies");
flg = file.renameTo(file3);
System.out.println("修改文件夹:"+flg);
// 创建一个名为 TokyoHot.txt文件
File file2 = new File(file3, "TokyoHot.txt");
try {
flg = file2.createNewFile();
} catch(IOException e) {
e.printStackTrace();
}
System.out.println("创建文件:"+flg);
flg = file2.delete();
System.out.println("删除文件:"+flg);
System.out.println("文件夹路径:"+file);
if(flg) flg = file3.delete();
System.out.println("删除文件夹:"+flg);
注意事项:重命名只是将File代表的文件或者文件夹重命名,Java中的File对象所代表的路径还是创建时赋予的路径;Java中的删除不走回收站;要删除一个文件夹,这个文件夹中不能包含文件或者文件夹,必须是空的。
判断功能
方法 | 描述 |
---|---|
public boolean isDirectory() | 判断是否是目录 |
public boolean isFile() | 判断是否是文件 |
public boolean exists() | 判断是否存在 |
public boolean canRead() | 判断是否可读 |
public boolean canWrite() | 判断是否可写 |
public boolean canExecute() | 判断是否可执行 |
public boolean isHidden() | 判断是否隐藏 |
实例
//判断功能
public static void judgmentMethod() {
//根据字符串形式的路径创建一个File对象
File file = new File(parent, "test");
// public boolean isDirectory()
//判断是否是目录,如果没有目录,不会给你创建目录
boolean flg = file.isDirectory();
System.out.println("判断是否是目录:"+flg); // false
//判断是否是文件
flg = file.isFile();
System.out.println(flg); //true
//判断是否存在
flg = file.exists();
System.out.println(flg); //true
//判断是否可读
flg = file.canRead();
System.out.println(flg); //true
//判断是否可写
flg = file.canWrite();
System.out.println(flg); //true
//判断是否隐藏
flg = file.isHidden();
System.out.println(flg); //false
//判断是否可执行
flg = file.canExecute();
System.out.println(flg); //true
}
获取功能
方法 | 描述 |
---|---|
public String getAbsolutePath() | 获取绝对路径 |
public String getPath() | 获取路径 |
public String getName() | 获取名称 |
public long length() | 获取长度。字节数 |
public long lastModified() | 获取最后一次的修改时间,毫秒值 |
public String[] list() | 获取指定目录下的所有文件或者文件夹的名称数组 |
public File[] listFiles() | 获取指定目录下的所有文件或者文件夹的File数组 |
实例
// FIle类的获取功能
public static void getMethod() {
//根据字符串形式的路径创建一个File对象
File file = new File(parent, "\\test2");
// File file = new File("text"); 当你不给文件绝对路径,它会将文件或者文件夹路径设置在项目目录下
// 获取文件或文件夹的绝对路径,从盘符开始
String absolutePath = file.getAbsolutePath();
System.out.println(absolutePath); // 不管这个地址有没有文件或者文件夹,它是获取file对象的绝对路径
//获取路径,创建file的是什么就是什么
String path = file.getPath();
System.out.println(path);
//获取文件或文件夹的名字
String name = file.getName();
System.out.println(name); // test1
//获取文件的长度,如果是文件夹的话就是0
long length = file.length();
System.out.println(length); // 4218字节数
//最后一个修改时间,没有的话就是创建时间
long lastModified = file.lastModified();
System.out.println(lastModified);
//获取目录下的所有文件或文件夹的名称数组
String[] filenames = file.list();
for (String string : filenames) {
System.out.println(string);
}
//获取目录下所有文件或文件夹的File表示对象数组
File[] files = file.listFiles();
for (File file2 : files) {
System.out.println(file2.getName());
}
}
注意:getAbsolutePath()表示获取绝对路径,一定是从盘符开始的,但是getPath表示的是路径,在创建file对象的时候给的是什么,就是从什么开始的。
//计算图片文件下所有后缀名为.jpg的直系文件的大小
public static void getPicturesJPG() {
String path = "C:\\Users\\xxx\\Pictures\\Camera Roll";
File file = new File(path);
File[] files = file.listFiles();
for(File file2 : files) {
if(file2.getName().endsWith(".jpg")) {
long length = file2.length();
System.out.println(length);
}
}
}
文件名称过滤器
方法 | 描述 |
---|---|
public String[] list(FilenameFilter filter) | 返回一个字符串数组,这些字符串指定此抽象路径名表示的目录满足指定过滤器的文件和目录 |
public File[] listFiles(FileFilter filter) | 返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录 |
实例
public static void listFilesFilter() {
//根据字符串形式的路径创建一个File对象
String path = "C:\\Users\\xxx\\Pictures\\Camera Roll";
File file = new File(path);
String[] filenames = file.list(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
if(name.endsWith(".jpg"))
return true;
return false;
}
});
for (String string : filenames) {
System.out.println(string); // 打印出文件名称
}
File[] files = file.listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
if(pathname.getName().endsWith(".jpg"))
return true;
return false;
}
});
for (File file2 : files) {
System.out.println(file2.getName()); //打印文件名称
}
}
网友评论