Java基础【07】常用API——File相关API

java.io.File
File表示一个抽象路径,简单的理解为可以访问文件系统中的一个文件或目录。
使用File我们可以:
 * 1:访问其表示的文件或目录的属性信息(名字,大小,修改时间等)。
 * 2:可以操作文件或目录(创建,删除)。
 * 3:可以访问一个目录中的所有子项。
但是不能访问一个文件里面的数据。

1.读取文件信息的相关方法

package file;

import java.io.File;

public class FileDemo {
	public static void main(String[] args) {
		/*
		 * 访问项目目录下的test.txt文件
		 * 在使用路径时,通常我们都使用相对路径,因为
		 * 绝对路径的指向太明确,导致的问题是不可变动,
		 * 那么在跨平台时会出现很多问题。
		 * 相对目录比较灵活,但是要清楚相对的路径是哪里,
		 * 而相对的路径要基于程序的运行环境而定。对于我们
		 * 现在都是在eclipse中运行程序而言,那么其表示的
		 * "当前目录"就是当前程序所在的项目目录。
		 */
		File file = new File("./test.txt");
		
		String name = file.getName();//获取文件名
		System.out.println(name);
		
		long length = file.length();//获取文件大小
		System.out.println(length+"字节");
		
		boolean cr = file.canRead();//获取文件的可读状态
		boolean cw = file.canWrite();//获取文件的可写状态
		System.out.println("可读:"+cr);
		System.out.println("可写:"+cw);
		
		boolean ih = file.isHidden();//获取文件的隐藏状态
		System.out.println("是否隐藏:"+ih);
		
                /* getAbsolutePath得到的是全路径。
                 * 如果构造参数是相对路径,则返回当前目录的绝对路径+构造参数路径;
                 * 如果是绝对路径则直接返回
                 */
		String path = file.getAbsolutePath();
		System.out.println(path);
	}
}

2. 判断文件是否存在:exists() 、创建一个新文件:createNewFile()

package file;

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

/**
 * 使用File创建一个新文件
 * @author adminitartor
 */
public class CreateNewFileDemo {
	public static void main(String[] args) throws IOException {
		/*
		 * 在项目目录下创建一个名为:demo.txt的文件
		 * 1:先创建一个File表示该文件
		 * 2:判断该文件是不存在的
		 * 3:创建该文件
		 */
		//1
		File file = new File("./demo.txt");
		//2
		if(!file.exists()){
			file.createNewFile();
			System.out.println("文件已创建!");
		}else{
			System.out.println("文件已存在!");
		}
	}
}

3.删除一个文件:delete()

package file;

import java.io.File;

/**
 * 删除一个文件
 * @author adminitartor
 */
public class DeleteFileDemo {
	public static void main(String[] args) {
		/*
		 * 将当前目录中的demo.txt文件删除
		 */
		File file = new File("./demo.txt");
		if(file.exists()){
			file.delete();
			System.out.println("文件已删除!");
		}else{
			System.out.println("文件不存在!");
		}
	}
}

4.创建一个目录:mkdir()

package file;

import java.io.File;

/**
 * 创建一个目录
 * @author adminitartor
 */
public class MkDirDemo {
	public static void main(String[] args) {
		/*
		 * 在项目目录下创建一个名为:demo的目录
		 * 
		 * 在相对路径中"./"可以忽略不写,默认就是从当前
		 * 目录开始
		 */
//		File dir = new File("./demo");
		File dir = new File("demo");
		if(!dir.exists()){
			dir.mkdir();
			System.out.println("目录已创建!");
		}else{
			System.out.println("目录已存在!");
		}
	}
}

5.创建一个多级目录:mkdirs()

package file;

import java.io.File;

/**
 * 创建一个多级目录
 * @author adminitartor
 */
public class MkDirsDemo {
	public static void main(String[] args) {
		/*
		 * 在当前目录下创建目录:a/b/c/d/e/f
		 * 
		 * mkdir在创建目录时要求其所在的父目录必须存在
		 * 否则创建不成功,而mkdirs则会将所有不存在的父
		 * 目录自动创建出来。
		 */
		File dir = new File("a/b/c/d/e/f");
		if(!dir.exists()){
			dir.mkdirs();
			System.out.println("创建完毕!");
		}else{
			System.out.println("目录已存在!");
		}
	}
}

6.访问一个目录中的所有子项:listFiles()

package file;

import java.io.File;

/**
 * 访问一个目录中的所有子项
 * @author adminitartor
 */
public class ListFilesDemo {
	public static void main(String[] args) {
		/*
		 * 获取当前目录中的所有子项
		 */
		File dir = new File(".");
		/*
		 * boolean isFile()
		 * 判断当前File表示的是否为一个文件
		 * 
		 * boolean Directory()
		 * 判断当前File表示的是否为一个目录
		 */
		if(dir.isDirectory()) {
			//获取所有子项
			File[] subs = dir.listFiles();
			for(int i=0;i<subs.length;i++){
				File sub = subs[i];
				System.out.println(sub.getName());
			}
		}
	}
}

7.重载的listFiles()方法,可以传入一个文件过滤器

package file;

import java.io.File;
import java.io.FileFilter;

/**
 * File提供了一个重载的listFiles方法,可以传入一个文件
 * 过滤器,然后只将该目录中满足过滤器要求的子项返回。
 * @author adminitartor
 */
public class ListFilesDemo2 {
	public static void main(String[] args) {
		/*
		 * 获取项目目录下所有名字是以"."开头的子项
		 */
		File dir = new File(".");
//		FileFilter filter = new MyFilter();
		/*
		 * 使用匿名内部类形式创建文件过滤器
		 * 过滤条件为:只获取文件。
		 */
		FileFilter filter = new FileFilter(){
			public boolean accept(File file) {
				return file.isFile();
			}
			
		};
		
		File[] subs = dir.listFiles(filter);
		for(int i=0;i<subs.length;i++){
			System.out.println(subs[i].getName());
		}
	}
}

8.删除目录:delete()

package file;

import java.io.File;

/**
 * 删除目录
 * @author adminitartor
 */
public class DeleteDirDemo {
	public static void main(String[] args) {
		/*
		 * 删除项目目录下的demo目录
		 * delete方法在删除目录时有一个前提条件,即:
		 * 目录必须是一个空目录才可以删除
		 */
		File dir = new File("demo");
		if(dir.exists()){
			dir.delete();
			System.out.println("目录已删除");
		}else{
			System.out.println("目录不存在!");
		}
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值