JAVA进阶版:File类(与IO流无关)

java.io.File;

  • 1.File类和流无关,不能通过该类完成文件的读和写
  • 2.File是文件和目录路径名的抽象表示形式
  • File代表的是硬盘上的Directory(目录)和file(文件)

(1)createNewFile() 创建文件; mkdirs() 创建多重目录

package javase.jingjie.File;
import java.io.*;
public class Filetest01 {	
	public static void main(String[] args) throws Exception{		
		File f1=new File("src/javase/jingjie/File/Filetest01.java");
		File f2=new File("E:\\java\\java chengxu\\java duixiang\\eclipse chengxu02\\src\\javase\\jingjie\\File\\Filetest01.java");
		File f3=new File("E:/java");		
		//exists()方法是检查是否存在目录或文件
		System.out.println(f1.exists());//true
		System.out.println(f2.exists());//true
		System.out.println(f3.exists());//true
		File f4= new File("e:/TTT");
		System.out.println(f4.exists());//false,不存在	
		//如果不存在,则创建
		if(!f4.exists()) {
			//创建目录
			f4.mkdir();
		}		
		File f5= new File("e:/HHH");
		System.out.println(f5.exists());//false,不存在
		if(!f5.exists()) {
			//创建文件
			f5.createNewFile();
		}	
		File f6= new File("e:/a/b/c/d");
		if(!f6.exists()) {
			//创建多重目录
			f6.mkdirs();
		}
	}
}

(2) File类的简单操作

package javase.jingjie.File;
import java.io.*;
import java.text.*;
import java.util.*;
public class Filetest02 {
	public static void main(String[] args) {		
		File f1=new File("src/javase/jingjie/File/Filetest02.java");
		
		//1.获取绝对路径f1.getAbsolutePath()
		String absolutePath=f1.getAbsolutePath();
		System.out.println(absolutePath);//E:\java\java chengxu\java duixiang\eclipse chengxu02\src\javase\jingjie\File\Filetest02.java
		
		//2.获取文件名f1.getName()
		System.out.println(f1.getName());//Filetest02.java
		
		//3.获取文件的父路径f2.getParent()
		File f2= new File("E:\\java\\java chengxu\\java duixiang\\eclipse chengxu02\\Filetest02.java");
		String parentPath= f2.getParent();
		System.out.println(parentPath);//E:\java\java chengxu\java duixiang\eclipse chengxu02
		
		//4.判断该File是目录还是文件f1.isDirectory()或f1.isFile()
		System.out.println(f1.isDirectory());//false
		System.out.println(f1.isFile());//true
		
		//5.获取文件最后一次修改时间f1.lastModified()
		Date t=new Date(f1.lastModified());
		System.out.println(new SimpleDateFormat("yyyy-MM-dd,HH:mm:ss:SSS").format(t));//2019-10-25,20:49:03:096
		
		//6.获取文件的字节数
		System.out.println(f1.length());
		
		//7.列出子文件夹     只有目录才有listFiles()方法,文件没有该方法
		File f3=new File("E:\\java\\java chengxu\\java duixiang\\eclipse chengxu02\\src\\javase\\jingjie\\IO");
		File[] fs=f3.listFiles();//获取该目录的所有子文件,只是IO文件的下一级  
		//遍历
		for(File f:fs) {
			//获取绝对路径
			//System.out.println(f.getAbsolutePath());
			
			//以.java结尾的文件
			if(f.getAbsolutePath().endsWith(".java")){
				System.out.println(f.getAbsolutePath()); 
			  }
		}
	}
}

(3) 使用递归找出某目录下所有子目录及子文件

package javase.jingjie.File;
/**
 * 使用递归找出某目录下所有子目录及子文件
 * */
import java.io.*;
public class Filetest03 {

	public static void main(String[] args) throws Exception{
		//
		File f=new File("E:\\java\\java chengxu\\java duixiang\\eclipse chengxu02");
		
		method1(f);
		
	}
	public static void method1(File f) {
		if(f.isFile()) {
			return;
		}
		//当做目录,f可能是文件,也可能是目录
		File[] fs=f.listFiles();//只有目录才有这个方法,列出所有子文件,只是当前目录的下一级,可能是目录或文件
		for(File subF:fs) {
			System.out.println(subF.getAbsolutePath());//
			method1(subF);
		}
	}
}
发布了71 篇原创文章 · 获赞 10 · 访问量 3416

猜你喜欢

转载自blog.csdn.net/JH39456194/article/details/104077703
今日推荐