目录分隔符
1.在windows下, 可以使用 "\" 与 "/"
2.在Unix/Linux下只能使用 "/"
路径:
绝对路径: 文件的完整路径,以盘符开头。
相对路径: 资源文件相对于当前目录路径。
. 代表是当前路径
.. 代表是上一级路径
注意: 不是在同一个盘符下,没法写相对路径
File类
通过File类常用方法可以获取和修改文件的属性数据。
File类的构造函数:
File(String pathname) | 文件或文件夹路径,创建一个File对象 |
File(File parent, String child) | 父路径与子路径构建一个File对象 。 |
File(String parent, String child) | 父路径与子路径构建一个File对象 |
File file = new File("g:/a.txt");
File parentFile = new File("g://");
File file1 = new File("g:\\", "a.txt");
File file2 = new File(parentFile, "a.txt");
方法:
创建:
createNewFile() | 在指定位置创建一个空文件 |
mkdir() | 在指定位置创建(最后一级)目录,上级目录不存在就抛异常 |
mkdirs() | 在指定位置创建目录,创建路径中所有不存在的目录 |
eg:
File file = new File("F:\\a.txt"); | 获取文件对象 |
File dir = new File("F:\\aa\\bb"); | 获取文件夹对象 |
file.createNewFile() | 创建一个空文件 |
dir.mkdir() | 创建一个单级文件夹 |
dir.mkdirs() | 创建一个多级文件夹 |
File file3 = new File("g:/b.docx");
System.out.println("创建文件" + file3.createNewFile());
// --------------------------------------------------------
File file4 = new File("g:/b/c");
System.out.println("创建一个单级文件夹:" + file4.mkdir());
System.out.println("创建一个多级文件夹:" + file4.mkdirs());
操作:
renameTo方法介绍:
操作文件:
源文件与目标文件相同路径:重命名
源文件与目标文件不同路径:剪切
操作文件夹:
源文件夹与目标文件夹相同路径:重命名
源文件夹与目标文件夹不同路径:不起作用
delete() 删除文件或一个空文件夹(空的)
deleteOnExit() 虚拟机结束时删除文件或目录
判断:
File file = new File("a.txt"); | |
file.exists() | 文件或文件夹是否存在。 |
file.isFile() | 是否是一个文件,如果不存在,则始终为false。 |
file.isDirectory() | 是否是一个目录,如果不存在,则始终为false。 |
file.isHidden() | 是否是一个隐藏的文件或是否是隐藏的目录。 |
file.isAbsolute() | 测试此抽象路径名是否为绝对路径名。 |
System.out.println(file.exists());
System.out.println(file.isDirectory());
System.out.println(file.isFile());
System.out.println(file.isHidden());
System.out.println(file.isAbsolute());
获取:
getName() | 获取文件或文件夹的名称 |
getPath() | 返回路径 |
getAbsolutePath() | 获取文件的绝对路径,与文件是否存在没关系 |
length() | 获取文件的(字节数),如果文件不存在或文件夹则返回0L。 |
getParent()
| 返回此抽象路径名父目录的路径名字符串; |
如果此路径名没有指定父目录,则返回null。 | |
lastModified() | 获取最后一次被修改的时间。 |
System.out.println(file.getName());
System.out.println(file.getPath());
System.out.println(file.getParent());
System.out.println(file.lastModified());
// 日期格式化类格式化时间输出
long time = file.lastModified();
SimpleDateFormat sm = new SimpleDateFormat("yyyy年MM月dd日 hh:mm:ss");
System.out.println(sm.format(time));
文件夹操作相关:
staic File[] listRoots() 列出所有的根目录(Window中就是所有系统的盘符)
File[] files = File.listRoots(); //列出所有的盘符
for(File root : files){
System.out.println(root);
}
list() 返回目录下的文件或者目录名,包含隐藏文件。
public static void listAllFilesAndDirs1(String path) {
// list方法列出文件和文件夹
File dir = new File(path);
String[] names = dir.list();
for (int i = 0; i <= names.length; i++) {
System.out.println(names[i]);
}
}
listFiles() 返回目录下的文件或者目录对象,包含隐藏文件。
public static void listAllFilesAndDirs2(String path) {
// listFire方法列出文件和文件夹
File dir = new File(path);
File[] names = dir.listFiles();
for (int i = 0; i < names.length; i++) {
File file = names[i];
if (file.isFile()) {
System.out.print("子文件:");
System.out.println("\t" + file.getName());
} else if (file.isDirectory()) {
System.out.print("子文件夹:");
System.out.println("\t" + file.getName());
}
}
}
拓展练习:根据扩展名列出文件
// 从指定目录中找到指定扩展名的文件,并列出来
public static void listAllFileswithExtention(String path, String extention) {
File file = new File(path);
File[] names = file.listFiles();
for (int i = 0; i < names.length; i++) {
if (names[i].getName().endsWith(extention)) {
System.out.println(names[i].getName());
}
}
}
public static void main(String[] args) {
String path = "g:/";// 指定目录
String extention = "txt";// 扩展名
listAllFileswithExtention(path, extention);
}