File类
java.io.File类代表文件和目录, 在开发中, 读取文件, 生成文件, 删除文件, 修改文件的属性时经常用到此类
File类常见构造方法: public File(String pathname), 以pathname为路径创建File对象, 如果pathname是相对路径, 则默认的当前路径在系统属性user.dir中存储
在eclipse项目开发中, user.dir就是本项目的目录. 因此, 执行完毕后, 在本项目和D盘下都生成了新文件(如果是eclipse下, 需用按F5刷新目录结构才能看到新文件)
方法 | 说明 |
pathSeparator, separator | 路径分隔符 |
File(String parent, String child) | 构造器 |
File(File parent, String child) | 构造器 |
File(String name) | 构造器, 没有路径则以工程目录(user.dir)作为相对路径 |
public boolean exits() | 判断File是否存在 |
public boolean isDirectory() | 判断File是否是目录 |
public boolean isFile() | 判断File是否是文件 |
public long lastModified() | 返回File最后修改时间 |
public long length() | 返回File大小, 若不存在则返回0 |
public String getName() | 返回文件名 |
public String getPath() | 返回文件的目录路径, 绝对路径则返回绝对路径, 相对路径则返回相对路径 |
public String getAbsolutePath() | 返回绝对路径 |
public getParent() | 返回父路径 |
createNewFile() | 创建新的File |
delete() | 删除目录或文件 |
length() | 返回文件大小 |
list() | 列出目录下所有文件 |
listFiles() | 把列出的文件/目录转化为对象 |
listRoots() | 列出根路径 |
mkdir() | 创建一个目录, 中间某个目录缺失, 则创建失败 |
mkdirs() | 创建多个目录, 中间某个目录缺失, 则创建缺失目录 |
/**********构造实例***********/
import java.io.File
String path = "G:\eclipse-workspace\Pro-1\IO.png"; // 两个反斜杠中有一个为转义字符
String path = "G:" + File.separator + "eclipse-workspace" + File.separator + "Pro-1" + File.separator + "IO.png"; // 利用File类中的字符拼接常量拼接路径
String path = "G:/eclipse-workspace/Pro-1/IO.png"; // 推荐此种方法
File src = new File(path); // 利用全路径名构建对象
src = new File(new File("G:/eclipse-workspace"), "Pro-1/IO.png"); // 利用父对象, 子对象构造实例对象
src = new File("IO.png"); // 在当前工程路径下构造对象
System.out.println(System.getProperty("user.dir")); // 输出工程路径
/******getpath()返回路径*******/
import java.io.File
public static void main(String[] args) {
String path = "G:/eclipse-workspace/Pro-1/IO.png";
File src = new File(path);
System.out.println(src.getPath());
System.out.println(src.length());
System.out.println("########################");
src = new File(new File("G:/eclipse-workspace"), "Pro-1/IO.png");
System.out.println(src.length());
System.out.println(src.getPath());
System.out.println("########################");
src = new File("IO.png");
System.out.println(System.getProperty("user.dir"));
System.out.println(src.getPath());
System.out.println(src.length());
}
/*
G:eclipse-workspacePro-1IO.png
36981
########################
36981
G:eclipse-workspacePro-1IO.png
########################
G:eclipse-workspacePro-1
IO.png
36981
*/
/*********路径相关*********/
public static void main(String[] args) {
File src = new File("IO.png");
File src_1 = new File("haha/IO.png");
System.out.println("名称: " + src.getName());
System.out.println("工程路径: " + System.getProperty("user.dir"));
System.out.println("路径: " + src.getPath());
System.out.println("绝对路径: " + src.getAbsolutePath());
System.out.println("父路径: " + src.getParent()); // 没有路径分割符, 所有父路径为空
System.out.println("父对象: " + src.getParentFile()); // 没有路径分割符, 所有父对象为空
System.out.println("src_1父路径: " + src_1.getParent());
System.out.println("src_1父对象: " + src_1.getParentFile());
}
/*
名称: IO.png
工程路径: G:eclipse-workspacePro-1
路径: IO.png
绝对路径: G:eclipse-workspacePro-1IO.png
父路径: null
父对象: null
src_1父路径: haha
src_1父对象: haha
*/
/**********************示例程序***************************/
import java.io.File;
import java.io.IOException;
import java.util.Date;
public static void main(String[] args) throws IOException {
// File f1 = new File("d:/a.txt"); // 使用斜杠反斜杠都可以
File f1 = new File("d:\a.txt"); // 两个反斜杠其中有一个是脱字符
System.out.println(f1);
f1.renameTo(new File("d:/bb.txt"));
File f2 = new File("gg.txt");
// f2.createNewFile(); //创建文件
System.out.println("f2是否存在: " + f2.exists());
System.out.println("f2是否是目录: " + f2.isDirectory());
// 把f2.createNewFile();注释掉则没有文件生成, 所有返回false
System.out.println("f2是否是文件: " + f2.isFile());
System.out.println("f2最后修改时间: " + new Date(f2.lastModified()));
System.out.println("f2的大小: " + f2.length());
System.out.println("f2的文件名: " + f2.getName());
System.out.println("f2的工程目录: " + System.getProperty("user.dir"));
System.out.println("f2的目录路径: " + f2.getPath());
System.out.println("f1的目录路径: " + f1.getPath());
}
/*
d:a.txt
f2是否存在: false
f2是否是目录: false
f2是否是文件: false
f2最后修改时间: Thu Jan 01 08:00:00 CST 1970
f2的大小: 0
f2的文件名: gg.txt
f2的工程目录: G:eclipse-workspacePro-1
f2的目录路径: gg.txt
f1的目录路径: d:a.txt
*/
/***********list(), listFiles()*******/
import java.io.File;
public static void main(String[] args) {
File dir = new File(System.getProperty("user.dir"));
// 列出目录下所有文件/目录
String[] subNames = dir.list();
for(String s : subNames) {
System.out.print(s + " ");
}
System.out.println();
// 以对象形式列出的目录/文件
File[] subFiles = dir.listFiles();
for(File s : subFiles) {
System.out.print(s.getAbsolutePath() + " ");
}
System.out.println();
// 列出所有盘符
File[] roots = dir.listRoots();
for(File r : roots) {
System.out.print(r.getAbsolutePath() + " ");
}
}
/*
.classpath .project .settings bin IO.png src
G:eclipse-workspacePro-1.classpath G:eclipse-workspacePro-1.project G:eclipse-workspacePro-1.settings G:eclipse-workspacePro-1in G:eclipse-workspacePro-1IO.png G:eclipse-workspacePro-1src
C: D: E: F: G:
*/
/*********递归形式打印*********/
import java.io.File;
public static void main(String[] args) {
File src = new File(System.getProperty("user.dir"));
printDirFile(src, 0);
}
public static void printDirFile(File src, int deep) {
for(int i = 0; i < deep; i ++) {
System.out.print("-");
}
System.out.println(src.getName());
if(null == src || !src.exists()) {
System.out.println("路径错误!!!");
}else if(src.isDirectory()) {
for(File s : src.listFiles()) {
printDirFile(s, deep + 1);
}
}
}
/*
Pro-1
-.classpath
-.project
-.settings
--org.eclipse.jdt.core.prefs
-bin
--zyb
---cn
----FileDemo_01.class
----FileDemo_02.class
-IO.png
-src
--zyb
---cn
----FileDemo_01.java
----FileDemo_02.java
*/
/**************创建文件与目录示例程序****************/
import java.io.File;
import java.io.IOException;
public static void main(String[] args) throws IOException {
File f = new File("d:/c.txt");
f.createNewFile();
// con com3... 操作系统的设备名,不能正确创建
// File src = new File("G:eclipse-workspacePro-1con");
// src.createNewFile(); // 报错
f.renameTo(new File("d:/g.out"));
// 删除不了重命名后的文件
f.delete();
File f2 = new File("d:/电影/华语/大陆");
boolean flag = f2.mkdir();
System.out.println(flag);
// 可删除目录与文件
// f2.delete();
boolean flag2 = f2.mkdirs();
System.out.println(flag2);
}
/*
false
true
*/
/*************File类应用*****************/
import java.io.File;
import java.io.IOException
public static void main(String[] args) {
File file = new File("d:/zyb/b.txt");
// 判断该文件是否存在
boolean flag = file.exists();
// 如果存在则删除, 不存在则创建
if(flag) {
// 删除
boolean flagd = file.delete();
if(flagd) {
System.out.println("删除成功");
}
else {
// 没有删除zyb目录
System.out.println("删除失败");
}
}
else {
// 创建
boolean flagn = true;
try {
File dir = file.getParentFile();
dir.mkdirs();
// 创建文件
flagn = file.createNewFile();
System.out.println("创建成功");
}
catch (IOException e) {
System.out.println("创建失败");
e.printStackTrace();
}
}
}
/*
创建成功
*/