Java.IO包
1.File类:代表文件、文件夹
用于表示文件或目录;只用于表示文件或目录的信息(名称、大小等),不能对文件的内容进行访问
----查看文件或目录属性
--------相对目录:Java虚拟机启动目录,Eclipse中默认相对路径是当前项目文件夹。
/*
* 文件夹
*/
File directory=new File("bin");//相对路径
System.out.println(directory.getAbsolutePath());//打印文件的绝对路径
System.out.println(directory.isDirectory());//打印bin是否为目录
System.out.println(directory.canRead());//打印bin是否为目录
long time=directory.lastModified();//最后修改的时间
Date date=new Date(time);
Format format=new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");//HH:24小时时间格式 MM:月 mm:分
System.out.println(format.format(date));//输出最后修改时间
/*
* 文件
*/
File file=new File("src\\FileDemo/FileDemo.java");// "/"反正都行,但"\"需要转义,即"\\"
System.out.println(file.isDirectory());//是否为问文件夹
System.out.println(file.isFile());//是否为文件
System.out.println(file.isAbsolute());//是否为绝对路径
System.out.println(file.length());//文件大小,已Byte为单位
System.out.println(file.canExecute());//是否可执行
System.out.println(file.canRead());//是否可读
System.out.println(file.canRead());//是否可写
System.out.println(file.getAbsolutePath());//打印绝对路径
System.out.println(file.exists());//文件是否存在
System.out.println(file.getName());//文件名
System.out.println(file.getParent());//父目录
System.out.println(file.getPath());//文件路径
System.out.println(file.lastModified());//最后修改时间
System.out.println(file.getClass());//类名
----创建文件或目录
/*
* 创建目录
*/
File newFile=new File("demo");
if(!newFile.exists())//文件是否存在
{
newFile.createNewFile();//不存在,创建文件
//newFile.mkdir();//创建文件夹
}
System.out.println(newFile.exists());
File reName=new File("demoto");
newFile.renameTo(reName);//文件重命名为demoto
newFile.delete();//文件删除,但不能删除重命名后的文件
reName.delete();//删除重命名后的文件
----访问文件系统(目录)
/*
* 访问文件系统
*/
File work=new File("./src/FileDemo");//当前目录
String[] list =work.list();//类似于ls,获取当前路径所有的文件及文件夹,保存在list中
System.out.println(work.getAbsoluteFile());
System.out.println(Arrays.toString(list));//输出当前路径所有的文件及文件夹
list=work.list(new filter());//过滤掉除。java文件名之外的文件
System.out.println(Arrays.toString(list));
list=work.list(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
return name.endsWith(".java");//返回以。java结尾的文件
}
});
System.out.println(Arrays.toString(list));
String str=".java";
list=work.list(new filter(str));//过滤掉除。java文件名之外的文件
System.out.println(Arrays.toString(list));
class filter implements FilenameFilter{//文件名过滤器
String str=".java";
public filter() {
}
public filter(String str) {
this.str=str;
}
@Override
public boolean accept(File dir, String name) {
return name.endsWith(str);//返回以。java结尾的文件
}
}
递归查找当前目录及子目录java文件
package ListAllDemo;
import java.io.File;
import java.io.FilenameFilter;
import java.util.Arrays;
public class ListAllDemo {
public static void main(String[] args) {
File file=new File("./src/FileDemo");
GetList(file, ".java");
}
public static void GetList(File src,String str){
//显示当前目录所有文件
ListFile(src,str);
//递归获得当前子目录,遍历子目录,列出每个子目录的文件
File[] list=src.listFiles();
for (int i = 0; i < list.length; i++) {
File d=list[i];
if(d.isDirectory()){
ListFile(d, str);
}
}
}
private static void ListFile(File src,String str) {
File[] list=src.listFiles(new filter(str));
System.out.println(Arrays.toString(list));
}
}
class filter implements FilenameFilter{//文件名过滤器
String str=".java";
public filter() {
}
public filter(String str) {
this.str=str;
}
@Override
public boolean accept(File dir, String name) {
return name.endsWith(str);//返回以。java结尾的文件
}
}