File类常用API介绍

java.io.File类用于表示文件/目录。

程序员可通过File类在硬盘上操作文件和目录。File类只能表示文件/目录的信息(如名称、大小),不能用于文件的访问。

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

public class FileDemo {
	
	public static void main(String[] args) {
		/*
		 * 假设在F盘下有一个文件Java
		 * 由于\是转义字符,所以在路径中要用双斜杠
		 */
		File file1=new File("F:\\Java");  //File类的构造函数 
		/*
		 * File.separator用于设置分隔符 这样任何系统都认识中间的分隔符
		 */
		File file11=new File("F:"+File.separator+"Java");
		System.out.println(file1.exists());   //判断文件/文件夹是否存在     true
		System.out.println(file11.exists());  //判断文件/文件夹是否存在     true
		File file2=new File("F:\\Java\\IO\\File");
		if(!file2.exists()){
			/*
			 * 创建多级目录用mkdirs(),创建一级目录用mkdir()
			 */
			file2.mkdirs();//文件不存在,自动创建IO和File
			//file2.mkdir();  //仅仅创建IO
		}
		else{
			file2.delete();//如果目录存在,删除文件夹File
		}
		
		
		/*
		 * 判断是否是一个目录
		 * 如果是目录返回true,如果不是目录或者目录不存在返回false
		 */
		System.out.println(file1.isDirectory());  //true
		
		
		/*
		 * 判断是否是一个文件
		 */
		System.out.println(file1.isFile());  //false
		File file3=new File("F:\\Java\\IO\\File\\日记1.txt");
		//File file33=new File("F:\\Java\\IO\\File","日记1.txt"); //功能与上面的语句相同
		System.out.println(file3.isFile());  //false
		if(!file3.exists())
			try{
				file3.createNewFile();  //自动添加异常处理
			}catch(IOException e){
				e.printStackTrace();
			}
		else
			file3.delete();
		System.out.println(file3.isFile());  //true

		
		/*
		 * 常用的File对象的API
		 */
		//直接打印file1,打印的是file1.toString()的内容
		System.out.println(file1); //F:\Java
		System.out.println(file1.getAbsolutePath());//功能与上面的语句相同
		
		System.out.println(file1.getName());//打印最后的目录名      Java
		System.out.println(file1.getParent());//得到父目录的路径     F:\
		System.out.println(file1.getParentFile());//功能与上面的语句相同     
		
		System.out.println(file3.getName());   //日记1.txt
		System.out.println(file3.getParent()); //F:\Java\IO\File
		System.out.println(file3.getParentFile());
	}
}

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

/*
 * 列出File类的一些常用操作 比如过滤、遍历等操作
 * 假设F盘下有一个文件夹名为java,java下有一文件夹名为IO
 * IO下有一文件夹名为new,还有一文件名为new.txt
 * new下有一文件夹名为new1,还有一文件名为new1.txt
 */
class FileUtils {
	/**
	 * 列出指定目录下(包括其子目录下)的所有文件
	 * @param dir
	 * @throws IOException
	 */
	public static void listDirectory(File dir)throws IOException{
		if(!dir.exists()){
			throw new IllegalArgumentException("目录:"+dir+"不存在.");
		}
		//list()方法用于列出当前目录下文件名和文件夹名
		String[] filenames=dir.list();
		System.out.println("目录"+dir+"下的文件名和文件夹名:");
		for(String f:filenames){
			System.out.println(f);  //不包含子目录下的文件名和文件夹名    
		}
		/*System.out.println("目录"+dir+"的子目录:");
		for(String f:filenames){  
			System.out.println(dir+"\\"+f);   
		}*/ //该注释掉的内容与下面的listFiles()方法功能相同
		
		//listFiles()方法用于返回子目录
		File[] files=dir.listFiles();  
		System.out.println("目录"+dir+"的子目录:");
		for(File file:files){
			System.out.println(file);
		}
		System.out.println();
		if(files!=null&&files.length>0){ //files!=null用来判断是否有子目录
			for(File file:files){
				if(file.isDirectory()){
					//递归
					System.out.println("将目录 "+file+" 传给listDirectory()进行递归:");
					listDirectory(file);
				}
			}
		}
	}
}
public class FileUtilsTest{
	public static void main(String[] args)throws IOException{
		FileUtils.listDirectory(new File("F:\\Java"));
	}
}

运行结果:

目录F:\Java下的文件名和文件夹名:
IO
XML
字符编码
目录F:\Java的子目录:
F:\Java\IO
F:\Java\XML
F:\Java\字符编码

将目录 F:\Java\IO 传给listDirectory()进行递归:
目录F:\Java\IO下的文件名和文件夹名:
new
new.txt
目录F:\Java\IO的子目录:
F:\Java\IO\new
F:\Java\IO\new.txt

将目录 F:\Java\IO\new 传给listDirectory()进行递归:
目录F:\Java\IO\new下的文件名和文件夹名:
new1
new1.txt
目录F:\Java\IO\new的子目录:
F:\Java\IO\new\new1
F:\Java\IO\new\new1.txt

将目录 F:\Java\IO\new\new1 传给listDirectory()进行递归:
目录F:\Java\IO\new\new1下的文件名和文件夹名:
目录F:\Java\IO\new\new1的子目录:

将目录 F:\Java\XML 传给listDirectory()进行递归:
目录F:\Java\XML下的文件名和文件夹名:
books.txt
books.xml
目录F:\Java\XML的子目录:
F:\Java\XML\books.txt
F:\Java\XML\books.xml

将目录 F:\Java\字符编码 传给listDirectory()进行递归:
目录F:\Java\字符编码下的文件名和文件夹名:
目录F:\Java\字符编码的子目录:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值