1.两个常量
- 路径分隔符
- 名称分隔符
public class Demo01 {
public static void main(String[] args) {
System.out.println(File.pathSeparator);
System.out.println(File.separator);
String path = "E:\\test\\2.jpg";
path = "E:" + File.separator + "xp" + File.separator + "test" + File.separator + "2.jpg";
path = "E:/xp/test/2.jpg";
}
}
2.使用相对路径与绝对路径构造 File对象
import java.io.File;
public class Demo02 {
public static void main(String[] args) {
String parentPath = "E:/xp/test";
String name = "2.jpg";
File src = new File(parentPath, name);
src = new File(new File(parentPath), name);
System.out.println(src.getName());
System.out.println(src.getPath());
src = new File("E:/xp/test/2.jpg");
System.out.println(src.getName());
System.out.println(src.getPath());
src = new File("test.txt");
src = new File(".");
System.out.println(src.getName());
System.out.println(src.getPath());
System.out.println(src.getAbsolutePath());
}
}
3.常用方法
package test.file;
import java.io.File;
import java.io.IOException;
public class Demo03 {
public static void main(String[] args) throws IOException, InterruptedException {
}
public static void test3() throws IOException, InterruptedException {
String path = "E:/xp/test/200.jpg";
File src = new File(path);
if (!src.exists()) {
boolean flag = src.createNewFile();
System.out.println(flag ? "成功" : "失败");
}
boolean flag = src.delete();
System.out.println(flag ? "成功" : "失败");
File temp = File.createTempFile("tes", ".temp", new File("e:/xp/test"));
Thread.sleep(10000);
temp.deleteOnExit();
}
public static void test2() {
String path = "E:/xp/test/200.jpg";
File src = new File(path);
System.out.println("文件是否存在:" + src.exists());
System.out.println("文件是否可写" + src.canWrite());
System.out.println("============");
if (src.isFile()) {
System.out.println("文件");
} else if (src.isDirectory()) {
System.out.println("文件夹");
} else {
System.out.println("文件不存在");
}
System.out.println("是否为绝对路径" + src.isAbsolute());
System.out.println("长度为:" + src.length());
}
public static void test1() {
File src = new File("2.txt");
System.out.println(src.getName());
System.out.println(src.getPath());
System.out.println(src.getAbsolutePath());
System.out.println(src.getParent());
}
}
4.操作目录
package test.file;
import java.io.File;
import java.io.FilenameFilter;
public class Demo04 {
public static void main(String[] args) {
test2();
}
private static void test2() {
String path = "E:/xp/test/";
File src = new File(path);
if (src.isDirectory()) {
System.out.println("======子目录|文件名===");
String[] subNames = src.list();
for (String temp : subNames) {
System.out.println(temp);
}
System.out.println("=====子目录|文件File对象====");
File[] subFiles = src.listFiles();
for (File temp : subFiles) {
System.out.println(temp.getAbsolutePath());
}
System.out.println("=====子文件.java对象====");
subFiles = src.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
return new File(dir, name).isFile() && name.endsWith(".java");
}
});
for (File temp : subFiles) {
System.out.println(temp.getAbsolutePath());
}
}
}
public static void test1(){
String path ="E:/xp/test/parent/p/test";
File src =new File(path);
src.mkdirs();
}
}
5.递归输出子孙级目录|文件的名称(绝对路径)
package test.file;
import java.io.File;
import java.util.Arrays;
public class Demo05 {
public static void main(String[] args) {
String path = "E:/xp/test";
File parent = new File(path);
File[] roots = File.listRoots();
System.out.println(Arrays.toString(roots));
for (File temp : roots) {
}
}
public static void printName(File src) {
if (null == src || !src.exists()) {
return;
}
System.out.println(src.getAbsolutePath());
if (src.isDirectory()) {
for (File sub : src.listFiles()) {
printName(sub);
}
}
}
}