Java基础之File(一)
File的定义
Java文件类以抽象的方式代表文件名和目录路径名。该类主要用于文件和目录的创建、文件的查找和文件的删除等。File类在java.io包里。
说的通俗易懂就是,file就是指一个文件或文件夹,文件及文件夹的创建、删除需要用到它,可以通过他获取文件的各种信息,但是不能获取文件的内容!!要获取文件的内容需要用到其他的类。
File构造函数
我们通过File的构造函数创建File对象(构造函数只是创建file的实例,并没有进行读写操作,因此,就算路径是错误的也不会报错)
- 通过给定的父抽象路径名和子路径名字符串创建一个新的File实例。
File(File parent, String child); - 通过将给定路径名字符串转换成抽象路径名来创建一个新 File 实例。
File(String pathname) - 根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。
File(String parent, String child) - 通过将给定的 file: URI 转换成一个抽象路径名来创建一个新的 File 实例。
File(URI uri)
个人觉得第二种创建方式是最常见的,直接给定一个路径来创建file对象。
File方法(操作文件)
这里不会太过于详细的介绍每一个方法,我会列举我个人认为较为常用的方法。这里贴一个菜鸟教程的网页,里面有详细的方法列举,可作为参考: https://www.runoob.com/java/java-file.html.
- public String getName()
获取文件或目录的文件名 - public String getParent()
获取文件或目录的父文件的路径,如果给定的抽象路径没有父目录,则返回null - public File getParentFile()
获取文件或目录的父文件,如果给定的抽象路径没有父目录,则返回null - public String getPath()
获取文件或目录的路径 - public boolean canRead()
判断文件或目录是否可读 - public boolean canWrite()
判断文件或目录是否可写 - public boolean exists()
判断文件或目录是否存在 - public boolean isFile()
判断是否是文件 - public boolean isDirectory()
判断是否是目录 - public long length()
获取文件的长度 - public long lastModified()
获取文件最后一次修改时间 - public boolean createNewFile() throws IOException
当文件不存在时创建新文件,需抛异常 - public boolean delete()
删除文件或为空的目录,当目录非空时无法删除。 - public String[] list()
获取目录中的文件及目录的名称,返回名称数组 - public File[] listFiles()
获取目录中的文件及目录,返回文件数组 - public boolean mkdir()
创建指定目录,但该指定目录的父目录必须存在 - public boolean mkdirs()
创建指定目录,该指定目录的父目录不存在则创建 - public boolean renameTo(File dest)
文件重命名
示例
在这里,我会写出一个递归删除目录的示例,以便各位参考。
public class IOLearn {
public static void main(String[] args) {
File file = new File("D://a");
if(!file.exists()){
System.out.println("该文件不存在!");
}else{//存在则删除
deletes(file);
System.out.println("删除完毕!");
}
}
/**
* 删除文件及目录
* @param file
*/
public static void deletes(File file){
if(file.isDirectory()){//判断是否是目录
File[] files = file.listFiles();//获取目录下的所有文件
for (File f : files) {//遍历每一个文件
deletes(f);//删除
}
}
file.delete();
}
}
本来是打算只写一个示例的,结果想起了listFiles有一个重载方法挺好用的,可以用来过滤文件,它需要传入一个文件过滤器,在文件过滤器中重写accept方法,返回条件为真的文件,如下所示。
/**
* 获取文件中符合条件的部分子项
* @author ZDL
*
*/
public class IOLearn2 {
public static void main(String[] args) {
File file = new File("D:");
//listFiles的重载方法,需要传入文件过滤器
File[] files = file.listFiles(new FileFilter() {
@Override
public boolean accept(File f) {//重写accept方法
return f.isFile();//过滤条件
}
});
//循环打印文件名
for (File file2 : files) {
System.out.println(file2.getName());
}
}
}
结束语
这是File的部分基础知识,但是如果要用File类的话,这些东西会经常使用,所以,对这些知识的巩固是很有必要的,为什么会想起来做这些基础篇呢?是因为自己的基础确实不牢固,我想再加深一下,虽然这些东西在网上一搜就出来了,但是,像这一类的简单知识点还去查阅资料,会消耗我们大量的开发时间,会减缓我们的工作效率,我之前就是这样,很多东西都是百度百度再百度,做一个功能贼慢,所以,是不可取的。
这也算是我的第一个正式的博客,希望以后能够继续保持初心,坚持下去。第一次写这些东西确实还挺费时间的,有做的不好的不对的地方,望大家多多包容,在下面告诉我,我会及时更正。谢谢。