JAVA好啊JAVA好,这回书就说…File!下面是目录!
- File对象的创建
- 操作文件的方法
- 操作目录的方法
- 示例:目录打印
1. File对象的创建
// 获得文件对象,可以是目录也可以是文件 '//'最好用File.separator
File file = new File("G:\\DEV\\201907E\\testIO\\Test.dat");
File file2 = new File("G:\\DEV\\201907E\\testIO","Test2.dat");
这里要强调,
new File(path)
的时候,相对路径是从项目文件加开始的,如果涉及到不同的系统,比如mac OS的路径分隔符是’/’,还是用File.separator
比较好,会根据运行的系统环境生成不同的分隔符
2. 对文件的操作
file.getName(); //得到文件名字
file.getPath(); //得到文件相对路径
file.getAbsoluteFile(); // 得到文件绝对路径
file.length(); //得到文件长度(注意不能是文件夹)
file.canRead(); //判断文件是否可读
file.canWrite(); //判断文件可写
file.canExecute(); //判断文件可执行
file.exists(); //判断文件/目录存在
file.isFile(); //判断是否为文件类型
file.isDirectory(); //判断是否为目录类型
file.isHidden(); //判断是否是隐藏文件
file.lastModified(); //获取最后一次修改时间
3. 对文件夹的操作
file.mkdir(); //创建目录
file.mkdirs(); //创建父目录和子目录(全部成功才返回true)
String[] files = file.list(); //返回目录下所有文件名和目录名(字符串)
String[] files2 = file.list(new MyFileNameFilter());//拿到满足过滤条件的目录名和文件名(字符串)
File[] files3 = file.listFiles();//拿到目录下所有文件名和目录名(File类型)
File[] files4 = file.listFiles(new MyFileFilter());//拿到目录下所有文件名和目录名(File类型)
File[] files5 = file.listFiles(new MyFileNameFilter());//拿到满足过滤条件的目录名和文件名(File类型)
file.createNewFile(); //创建文件
file.delete(); //删除(如果子目录有东西,会失败)
这里强调下,
new MyFileter()
和new MyFileNameFilter()
都是自己写的类,里面要实现接口,分别是FileFilter
和FileNameFilter
来达到过滤文件的效果
4. 示例:目录打印
目录打印就很简单了,其实就是打印出来当前目录下的所有文件,如果是目录类型,就递归打印,直到都打印出来。
示例代码:
public class FileList
{
public static void fun(File dir)
{
if(dir.isFile() || !(dir.isexists()) return ;//不是目录就退
File[] files = dir.listFiles(); //列出当前目录下的
for (int i = 0; i < files.length; i++)
{
System.out.println(files[i]);
if (files[i].isDirectory())
{
fun(files[i]);
}
}
return;
}
public static void main(String[] args)
{
File dir = new File("G:\\DEV\\MyProject");
fun(dir);
}
}