文件
当 File 表示一个文件的时候,有以下的操作
import java.io.File;import java.io.IOException;public class FileTest {public static void main(String[] args) {File f = new File("./test1.txt");// 不过文件存不存在,都可以操作System.out.println(f); // 输出路径System.out.println(f.getName()); //test.txtSystem.out.println(f.getAbsoluteFile()); // C:\code\java\.\test.txtSystem.out.println(f.getPath()); // .\test.txt// 这里就有 IOException 的问题了try {System.out.println(f.getCanonicalPath()); // C:\code\java\test.txtif (f.exists()){System.out.println("文件存在");}else{f.createNewFile();System.out.println("创建文件成功");}}catch (IOException e){System.out.println(e)}}}
目录
当 File 表示一个目录的时候,和文件操作类似,可以通过以下方法创建和删除目录:
boolean mkdir():创建当前File对象表示的目录;boolean mkdirs():创建当前File对象表示的目录,并在必要时将不存在的父目录也创建出来;boolean delete():删除当前File对象表示的目录,当前目录必须为空才能删除成功。
其中还可以列出这个文件夹下面的所有的文件
//表示文件夹File folder = new File(".");File[] fs = folder.listFiles();for(File f1 : fs){System.out.println(f1.getName());}
path
如果需要对目录进行复杂的拼接、遍历等操作,使用Path对象更方便。
练习
请利用File对象列出指定目录下的所有子目录和文件,并按层次打印。
例如,输出:
Documents/word/1.docx2.docxwork/abc.docppt/other/
import java.io.File;
public class PathTest {
public static void main(String[] args) {
printFolder(".");
}
static void printFolder(String path){
File f = new File(path);
File [] fs = f.listFiles();
if(fs != null){
for(File f1:fs) {
if (f1.isDirectory()) {
System.out.println(f1.getName() + "/");
printFolder(f1.getPath());
}else{
System.out.println(" " + f1.getName());
}
}
}
}
}

