8.5-全栈Java笔记:File类基本用法
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