1.文件操作基本命令
创建:
createNewFile();//只在文件不存在时创建,创建成功返回true,如果文件已经存在不创建,返回false.创建文件时只能在已有的路径下创建。此方法只能创建文件不能创建文件夹。mkdir()//创建文件夹,此方法只能创建一级目录,如果有多级目录无法创建。
mkdirs()//创建文件夹,此方法可以创建多级目录,会将路径中须有的所有目录都依次创建出来。
删除:
delete()//既可以删除文件也可以删除文件夹,如果要删除的是一个文件夹,则该文件夹必须位空的才能删除
判断:
boolean canRead() //判断该文件是否可读
boolean canWrite() //判断文件是否可写
boolean exists() //判断文件或文件夹是否存在
boolean isFile() //判断是否是一个文件,如果File表示的是一个文件且文件存在则返回true,如果File表示的文件不存在或者是一个文件夹则返回false
boolean isDirectory()//判断是否是一个文件夹,只有这个File代表的是一个文件夹且文件夹存在返回true,否则返回false
boolean isHidden() //判断是否是一个隐藏文件
获取信息:
String getName();//获取名称
String getAbsolutePath() //获取文件的绝对路径
String getPath() //获取路径
long length() //获取文件的大小,如果文件不存在返回0L,如果是个目录,则返回值不确定
long lastModified() //返回文件的最后修改时间
String getParent() //获取父目录的字符串形式
File getParentFile() //获取父目录的File对象形式
设置方法:
boolean setLastModified(long time) //设置最后修改时间
boolean setReadable(boolean readable) //设置文件是否可读
boolean setWritable(boolean writable) //设置文件是否可写
renameTo(File f);//重命名方法,除了可以修改文件名字,还可以实现类似剪切的操作
获取文件:
static File[] listRoots() //获取当前系统的所有盘符
String[] list() //获取目录中的所有内容(包括文件和文件夹)的名字组成的字符串数组
String[] list(FilenameFilter filter)
File[] listFiles() //获取目录中的所有内容(包括文件和文件夹)的File对象的数组
File[] listFiles(FileFilter filter)
package zll.material.java_base_homework;
import java.io.File;
import java.io.FilenameFilter;
import java.io.IOException;
import java.util.Date;
public class FileDemo1 {
public static void main(String[] args) throws IOException {
//createNewFile();//只在文件不存在时创建,创建成功返回true,如果文件已经存在不创建,返回false.创建文件时只能在已有的路径下创建。此方法只能创建文件不能创建文件夹。
// File file = new File("E:\\new1.txt");
// boolean flag = file.createNewFile();
// System.out.println(flag);
//mkdir()//创建文件夹,此方法只能创建一级目录,如果有多级目录无法创建。
// File file = new File("E:\\aaa");
// boolean flag = file.mkdir();
// System.out.println(flag);
//mkdirs()//创建文件夹,此方法可以创建多级目录,会将路径中须有的所有目录都依次创建出来。
// File file = new File("E:\\aaa\\bbb\\ccc");
// boolean flag = file.mkdirs();
// System.out.println(flag);
//delete()//既可以删除文件也可以删除文件夹,如果要删除的是一个文件夹,则该文件夹必须位空的才能删除
// File file = new File("E:\\aaa");
// boolean flag = file.delete();
// System.out.println(flag);
//boolean canWrite() //判断文件是否可写
// File file = new File("c:\\aaa\\bbb\\1.txt");
// if(file.canWrite()){
// System.out.println("写入数据。。。。");
// }else{
// throw new RuntimeException("文件不可写!");
// }
//boolean exists() //判断文件或文件夹是否存在
// File file = new File("c:\\aaa\\bbb\\11.txt");
// System.out.println(file.exists());
//boolean isFile() //判断是否是一个文件,如果File表示的是一个文件且文件存在则返回true,如果File表示的文件不存在或者是一个文件夹则返回false
// File file = new File("c:\\aaa\\bbb\\1.txt");
// System.out.println(file.isFile());
//boolean isHidden() //判断是否是一个隐藏文件
// File file = new File("c:\\aaa\\bbb\\1.txt");
// System.out.println(file.isHidden());
//String getName();//获取名称
// File file = new File("c:\\aaa\\bbb\\1.txt");
// System.out.println(file.getName());
//String getPath() //获取路径
//String getAbsolutePath() //获取文件的绝对路径
// File file = new File("1.txt");
// System.out.println(file.getAbsolutePath());
// System.out.println(file.getPath());
//long length() //获取文件的大小,如果文件不存在返回0L,如果是个目录,则返回值不确定
//long lastModified() //返回文件的最后修改时间
// File file = new File("c:\\aaa\\bbb\\1.txt");
// System.out.println(file.length());
// long lastModTime = file.lastModified();
// Date date = new Date(lastModTime);
// System.out.println(date.toLocaleString());
//String getParent() //获取父目录的字符串形式
// File file = new File("c:\\aaa\\bbb\\1.txt");
// System.out.println(file.getParent());
//boolean setLastModified(long time) //设置最后修改时间
// File file = new File("c:\\aaa\\bbb\\1.txt");
// file.setLastModified(System.currentTimeMillis());
//
// File file = new File("c:\\aaa\\bbb\\1.txt");
// file.setReadOnly();
//renameTo(File f);//重命名方法,除了可以修改文件名字,还可以实现类似剪切的操作
// File file = new File("c:\\aaa\\bbb\\1.txt");
// File newFile = new File("c:\\new1.txt");
// file.renameTo(newFile);
//static File[] listRoots() //获取当前系统的所有盘符
// File [] fs = File.listRoots();
// for(File f : fs){
// System.out.println(f.getAbsolutePath());
// }
//String[] list() //获取目录中的所有内容(包括文件和文件夹)的名字组成的字符串数组
// File file = new File("c:\\");
// String [] strs = file.list();
// for(String str : strs){
// System.out.println(str);
// }
//String[] list(FilenameFilter filter)
// File file = new File("c:\\");
// String [] strs = file.list(new FilenameFilter() {
// @Override
// public boolean accept(File dir, String name) {
// return name.endsWith(".txt");
// }
// });
// for(String str : strs){
// System.out.println(str);
// }
}
}
2.利用递归和文件基本操作命令实现:递归删除非空文件夹
package com.zll.file;
import java.io.File;
/**
递归的结束条件:如果是文件或空文件夹就删除
向下递归的条件:如果是非空文件夹就接着递归
*/
public class DelFileDemo1 {
public static void main(String[] args) {
del(new File("c:\\aaa"));
}
//如果该文件夹是空的就删除,如果不是空的就删除所有子内容再删除当前文件夹
public static void del(File dir){
if(dir.list().length==0){
//文件夹是空的,直接删除
dir.delete();
}else{
//文件夹不是空的,就列出所有孩子,如果是文件,删除,如果是文件夹就递归,所有孩子删干净后,删除自己
File [] fs = dir.listFiles();
for(File f : fs){//遍历当前目录的所有孩子
if(f.isFile()){
//如果是个文件,删出
f.delete();
}else{
//如果是个文件夹就递
del(f);
}
}
dir.delete();
}
}
}
3.利用递归和文件基本操作命令实现:打印文件夹的目录树结构
package com.zll.file;
import java.io.File;
/**
递归:方法自己调用自己
*/
public class ShowFileTreeDemo1 {
public static void main(String[] args) {
File file = new File("c:\\aaa");
tree(file,0);
}
public static void tree(File dir,int deep){
File [] fs = dir.listFiles();
for(File f : fs){
for(int i = 0;i<deep;i++){
System.out.print("---");
}
if(f.isFile()){
System.out.println(f.getName());
}else{
System.out.println(f.getName());
tree(f,deep+1);
}
}
}
}