File

File:File:文件和目录路径名的抽象表示;该实例File类是不可变的; 也就是说,一旦创建,由File对象表示的抽象路径名永远不会改变
File的构造方法如下:

  • File(File parent, String child)
  • File(String pathname)
  • File(String parent, String child)

File的常用功能

  • 创建功能
    boolean createNewFile()
    boolean mkdir()
    boolean mkdirs()
  • 删除功能
    boolean delete()
  • 获取功能
    File getAbsoluteFile()
    String getAbsolutePath()
    String getName()
    String getParent()
    File getParentFile()
    String getPath()
    long lastModified()
    long length()
  • 判断功能
    boolean exists()
    boolean isAbsolute()
    boolean isDirectory()
    boolean isFile()
    boolean isHidden()
  • 修改名字的方法
    boolean renameTo(File dest)

实例1:

package com.it01;

import java.io.File;


public class FileDemo {

	public static void main(String[] args) {
		//File(String pathname) 将指定的路径名转换为一个File对象
		File f  = new File("E:\\a\\a.txt");
		
		//File(String parent, String child)根据指定的夫路径和文件路径创建File对象
		File f2  = new File("E:\\a","a.txt");
		
		//File(File parent, String child)根据指定的夫路径对象和文件路径创建File对象
		File parent = new File("E:\\\\a");
		File f3  = new File(parent,"a.txt");
		
		
		File f4  = new File(new File("E:\\\\a"),"a.txt");
	}

}

创建和删除功能实例:

package com.it01;

import java.io.File;
import java.io.IOException;

/*
 * 	创建和删除功能
 * 	创建功能
 * 			boolean createNewFile() 
 * 			boolean mkdir() 
 * 			boolean mkdirs()    
 * 	删除功能
 * 			boolean delete() 
 * 
 *  注意:删除一个文件夹,文件夹下不能有子文件夹
 */
public class FileDemo2 {

	public static void main(String[] args) throws IOException {
		File f = new File("a.txt");
		
		//boolean createNewFile():当指定文件不存在时创建成功,否则返回false
		System.out.println(f.createNewFile());
		
		//boolean mkdir()当指定文件夹不存在时创建成功,否则返回false
		File f2 = new File("b");
		System.out.println(f2.mkdir());
		
		//boolean mkdirs()创建指定文件夹,当文件所在的目录不存在,则一并创建
		File f3 = new File("c\\d\\e");
		System.out.println(f3.mkdirs());
		
		//boolean delete()当指定的文件或文件夹存在时删除文件返回true,否则返回false
		//System.out.println(f2.delete());
		System.out.println(f2.delete());
		
		
		
	}

}

判断功能实例:

package com.it01;

import java.io.File;

/*
 * 	判断功能
 * 		boolean exists() 
 *  	boolean isAbsolute()  
 * 		boolean isDirectory()  
 * 		boolean isFile() 
 * 		boolean isHidden()  
 */
public class FileDemo3 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		File f = new File("a.txt");
		
		//boolean exists()判断文件或者文件夹是否存在
		System.out.println(f.exists());
		
		//boolean isAbsolute() 
		File f2 = new File("a.txt");
		System.out.println(f2.isAbsolute());
		
		//boolean isDirectory()判断对象指向的路径是否是文件夹
		File f3 = new File("a.txt");
		System.out.println(f3.isDirectory());
		
		//boolean isFile() 判断是否是文件(不判断文件夹)
		File f4 = new File("a.txt");
		System.out.println(f4.isFile());
		
		//boolean isHidden()判断是否是隐藏文件或者文件夹
		File f5 = new File("a.txt");
		System.out.println(f5.isHidden());
		
	}

}

获取和修改功能实例:

package com.it01;

import java.io.File;
import java.io.IOException;
import java.util.Date;

/*
 * 	获取功能
 * 			File getAbsoluteFile()  
 * 			String getAbsolutePath()  
 * 			String getName()  
 * 			String getParent()  
 * 			File getParentFile() 
 * 			String getPath()   
 * 			long lastModified()  
 * 			long length()  
 * 	修改功能
 * 		boolean renameTo(File dest)
 */
public class FileDemo4 {

	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		File f = new File("a.txt");
		
		// File getAbsoluteFile()---以file对象的形式返回当前file对象所指向的绝对路径
		System.out.println(f.getAbsoluteFile());
		//String getAbsolutePath()--- (获取的file对象所指向的绝对路径)
		System.out.println(f.getAbsolutePath());
		
		//String getParent()如果指向夫路径,则可能返回null
		System.out.println(f.getParent());
		//File getParentFile()
		System.out.println(f.getParentFile());
		
		File parent = new File("b");
		File f2 = new File(parent,"c.txt");
		if(!parent.exists()) {
			parent.mkdirs();
		}
		System.out.println(f2.createNewFile());
		System.out.println(f2.getParent());//b
		System.out.println(f2.getParentFile());//b
		
		//String getName() 返回文件名和文件夹的名称
		System.out.println(f.getName());
		
		//String getPath() 返回创建对象时给的路径有可能是相对也可能时绝对路径
		System.out.println(f.getPath());
		//long lastModified() 返回上一次修改的时间
		System.out.println(f.lastModified());
		Date d = new Date(f.lastModified());
		System.out.println(d.toLocaleString());
		
		//long length()返回file对象(文件)的字节数
		System.out.println(f.length());
		
		//boolean renameTo(File dest)将当前file对象所指向的路径修改为指定file所指向的路径(修改的文件路径不能存在,如果存在则修改失败)
		File f3 = new File("b.txt");
		System.out.println(f.renameTo(f3));

	}

}

其他重要的获取功能实例:

package com.it01;

import java.io.File;

/*
 * 	重要的获取功能
 * 		String[] list()
 * 		File[] listFiles()
 * 		static File[] listRoots()
 */
public class FileDemo5 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		File f = new File("b");
		
		//String[] list()返回当前路径下所有的文件和文件夹名称(只有指向文件夹下对象才能调用此方法)
		String[] list = f.list();
		for (int x=0;x<list.length;x++) {
			System.out.println(list[x]);
		}
		
		//File[] listFiles()
		File[] files = f.listFiles();
		for (File file : files) {
			System.out.println(file);
		}
		
		//static File[] listRoots()
		File[] filelist = File.listRoots();
		for (File file : filelist) {
			System.out.println(file);
		}

	}

}

需求:输出指定目录下所有java文件名(包含子目录)

package com.it02;

import java.io.File;

/*
 * 	测试数据
 * 	需求:输出指定目录下所有java文件名(包含子目录)
 */
public class Test {

	public static void main(String[] args) {
		File f = new File("src");
		method(f);

	}
	
	//输出指定目录下所有java文件名(包含子目录)
	public static void method(File file) {
		if (file.isDirectory()) {
			File[] files = file.listFiles();
			for (File f : files) {
				// 判断是否时文件对象
				if (f.isFile()) {
					if (f.getName().endsWith(".java")) {
						System.out.println(f.getName());
					}
				}else {
					//说明是一个目录,紧接着调用自己
					method(f);
				}
			}

		}
	}
	//输出输出指定目录下所有java文件名
	public static void method2(File file) {
		if (file.isDirectory()) {
			File[] files = file.listFiles();
			for (File f : files) {
				// 判断是否时文件对象
				if (f.isFile()) {
					if (f.getName().endsWith(".java")) {
						System.out.println(f.getName());
					}
				}
			}

		}
	}

}

需求:删除指定的目录(包含子目录)

package com.it02;

import java.io.File;

/*
 * 	需求:删除指定的目录(包含子目录)
 * 
 * 	注意:如果要删除一个目录,则需要先删除这个目录下的所有子文件和子目录
 */
public class Test2 {

	public static void main(String[] args) {
		File f = new File("需要删除的目录");
		method(f);
		
	}
	
	public static void method(File file) {
		if(file.isDirectory()) {
			//删除自己子目录和子文件
			
			//获取所有的子文件和子目录
			File[] files = file.listFiles();
			for(File f:files) {
				if(f.isFile()) {
					System.out.println(f.getName());
					f.delete();
				}
				else if(f.isDirectory()) {
					//继续查看是否还有文件和子目录
					method(f);
				}
			}
			//删除自己
			System.out.println(file.getName());
			file.delete();
		}
	}

}