File类
File类的基本用法
java.io.File类:代表文件和目录。 在开发中,读取文件、生成文件、修改文件时经常会用到本类。
File类的常见构造方法:public File(String pathname)
以pathname为路径创建File对象,如果pathname是相对路径,则默认的当前路径在系统属性user.dir中存储。
public class TestCanlendar {
public static void main(String[] args) throws Exception {
System.out.println(System.getProperty("user.dir"));;
File f = new File("a.txt"); //默认放到user.dir目录下面
f.createNewFile();
File f2 = new File("d:/b.txt");
f2.createNewFile();
}
}
在eciplse项目开发中,user.dir就是本项目的目录。因此,执行完毕后,在本项目和D盘下都生成了新的文件。(如果是eclipse下,一定按F5刷新目录结构才能看到新文件)
通过File对象可以访问文件的属性:
方法
说明
public boolean exists()
判断File是否存在
public boolean isDirectory()
判断File是否是目录
public boolean isFile()
判断File是否是文件
public long lastModified()
返回File最后修改时间
public long length()
返回File大小
public String getName()
返回文件名
public String getPath()
返回文件的目录路径
【示例1】测试File类基本用法
import java.io.File;
import java.util.Date;
public class TestCanlendar {
public static void main(String[] args) throws Exception {
File f = new File("d:/b.txt");
System.out.println("File是否存在:"+f.exists());
System.out.println("File是否是目录:"+f.isDirectory());
System.out.println("File是否是文件:"+f.isFile());
System.out.println("File最后修改时间:"+new Date(f.lastModified()));
System.out.println("File的大小:"+f.length());
System.out.println("File的文件名:"+f.getName());
System.out.println("File的目录路径:"+f.getPath());
}
}
示例1 运行效果图
通过File对象创建空文件或目录(在该对象所指的文件或目录不存在的情况下)
方法
说明
createNewFile()
创建新的File
delete()
删除File对应的文件
mkdir()
创建一个目录;中间某个目录缺失,则创建失败;
mkdirs()
创建多个目录;中间某个目录缺失,则创建该缺失目录;
【示例2】测试生成和删除文件、创建目录
public class TestCanlendar {
public static void main(String[] args) throws Exception {
File f = new File("d:/c.txt");
f.createNewFile(); //会在d盘下面生成c.txt文件
f.delete(); //将该文件或目录从硬盘上删除
File f2 = new File("d:/电影/华语/大陆");
// f2.mkdir(); //目录结构中有一个不存在,则不会创建整个目录树
f2.mkdirs(); //目录结构中有一个目录不存在,也没关系;创建整个目录树
}
}
递归遍历目录结构和树状展现
本节结合前面给大家讲的递归算法,展示目录结构。大家可以先建立一个目录,下面增加几个子文件夹或者文件,用于测试。
【示例3】使用递归算法,以树状结构展示目录树
public class FileTree {
public static void main(String[] args) {
File f = new File("d:/电影");
printFile(f, 0);
}
/**
* 打印文件信息
* @param file 文件名称
* @param level 层次数(实际就是:第几次递归调用)
*/
static void printFile(File file,int level){
for (int i = 0; i < level; i++) {
System.out.print("-");
}
System.out.println(file.getName());
if(file.isDirectory()){
File[] files = file.listFiles();
for (File temp : files) {
printFile(temp, level+1);
}
}
}
}
示例3 运行效果图
「全栈Java笔记」是一部能帮大家从零到一成长为全栈Java工程师系列笔记。笔者江湖人称 Mr. G,10年Java研发经验,曾在神州数码、航天院某所研发中心从事软件设计及研发工作,从小白逐渐做到工程师、高级工程师、架构师。精通Java平台软件开发,精通JAVAEE,熟悉各种流行开发框架。
笔记包含从浅入深的六大部分:
A-Java入门阶段
B-数据库从入门到精通
C-手刃移动前端和Web前端
D-J2EE从了解到实战
E-Java高级框架精解
F-Linux和Hadoop
网友评论