总结文件File的相关知识
1.文件基础知识
package day06file;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
/**java.io.File
* File的每一个实例用于表示操作系统中文件系统中的一个文件或目录(硬盘上的一个文件或目录)。
* 文件系统是操作系统的一部分,用于管理硬盘上的数据,通常会将数据以文件形式表示,并用目录进行归纳
*
* 当使用File表示一个文件或目录时,可以:
* 1:访问该文件或目录的属性信息,例如:文件名,最后修改时间,文件大小等。
* 2:可以操作文件或目录(创建,删除)
* 3:可以访问该目录的所有子项但是不能访问文件数据。*/
public class FileDemo {
public static void main(String[] args) throws IOException {
File file = new File("."+File.separator+"demo.txt");
/**File可以访问其表示的文件或目录的属性信息 */
System.out.println("name:"+file.getName());
System.out.println("length:"+file.length());
System.out.println("canRead:"+file.canRead());
System.out.println("canWrite:"+file.canWrite());
System.out.println("canExcecute:"+file.canExecute());
System.out.println("isHidden"+file.isHidden());
long lastModifiedTime = file.lastModified();
SimpleDateFormat sdf = new SimpleDateFormat("YYYY-MM-DD HH:mm:ss");
String str = sdf.format(lastModifiedTime);
System.out.println("lastModifiedTime:"+str);
/**File可以操作文件或目录,即:创建一个文件或目录*/
File f = new File("test.txt");
if(!f.exists()){
f.createNewFile();
System.out.println("创建完毕");
}else{
System.out.println("文件已经存在");
}
File fl = new File("test.txt");
if(f.exists()){
f.delete();
System.out.println("文件已删除");
}else{
System.out.println("文件不存在");
}
File dir = new File("demo");
if(!dir.exists()){
dir.mkdir();
System.out.println("目录创建完毕");
}else{
System.out.println("目录已存在");
}
/**创建一个多级目录 在当前目录demo下创建a/b/c/d/f**/
File dr = new File("demo"+File.separator+
"a"+File.separator+
"b"+File.separator+
"c"+File.separator+
"d"+File.separator+
"f");
if(!dr.exists()){
dr.mkdirs();
System.out.println("目录创建完毕");
}else{
System.out.println("目录已存在");
}
/***删除目录
* 删除目录与删除文件的方法一致,delete方法,
* 但是删除目录有一个前提条件,该目录是一个空目录(该目录中不包含任何子项),否则无法删除
* 先在当前目录中创建一个a文件夹*/
File d = new File("a");
if(d.exists()){
d.delete();
System.out.println("删除完毕");
}else{
System.out.println("删除不成功");
}
/**获取一个目录中的部分子项 获取当前目录下得所有子项**/
File fz = new File(".");
File[] subs = fz.listFiles();
System.out.println(subs.length);
for(File sub:subs){
if(sub.isFile()){
System.out.print("文件");
}else if(sub.isDirectory()){
System.out.print("目录");
}
System.out.println(sub.getName());
}
System.exit(0);
}
}
2.文件过滤器
package day06file;
import java.io.File;
import java.io.FileFilter;
public class FileFilterDemo {
public static void main(String[] args) {
/**获取一个目录中满足条件的部分子项
* File[] listFiles(FileFilter filter)
* 该重载方法要求传入一个文件过滤器,然后该方法只会返回当前目录中满足过滤器要求的所有子项*/
File dir = new File(".");
FileFilter filter = new MyFilter();
File[] subs = dir.listFiles();
for(File sub:subs){
System.out.println(sub.getName());
}
}
}
class MyFilter implements FileFilter{
@Override
public boolean accept(File f) {
String name = f.getName();
return name.startsWith(".");
}
}
3.递归删除文件
package day06file;
import java.io.File;
/**
* 删除File表示的文件或目录
* 使用递归的方法
* */
public class FileDeleteDiGui {
public static void main(String[] args) {
File f = new File("."+File.separator+"a");
delete(f);
}
public static void delete(File file){
if(file.isDirectory()){
File[] subs = file.listFiles();
for(File sub:subs){
delete(sub);
}
}
}
}