File 文件类

File类

文件和目录路径名的抽象表示形式

  • 静态成员变量
    static String separator 名称分隔符
    static String pathSeparator 路径分隔符

  • 构造方法
    public File(String pathname) pathname文件路径名
    public File(String parent,String child) 父路径名 子路径名
    public File(File parent,String child) 通过父文件对象和子文件名称构造文件对象

File的相关属性功能:

  • 取得文件名 public String getName()
  • 取得文件路径 public String getPath()
  • 得到绝对路径名 public String getAbsolutePath()
  • 得到父文件夹名 public String getParent()
  • 判断文件是否隐藏 public boolean isHidden()
  • 判断文件是否存在 public boolean exists()
  • 判断文件是否可写 public boolean canWrite()
  • 判断文件是否可读 public boolean canRead()
  • 判断是否是目录 public boolean isDirectory()
  • 判断是否是文件 public boolean isFile()
  • 是否是绝对路径名称 public boolean isAbsolute()
  • 文件最后的修改时间 public long lastModified()
  • 文件的大小 public long length()
    代码示例:
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Task01 {
	public static void main(String[] args) {
		// 封装文件路径
		File file = new File("E:\\练习\\mygames.txt");
		
		//取得文件名			public String getName()
		System.out.println(file.getName());//mygames.txt
		//取得文件路径			public String getPath()
		System.out.println(file.getPath());//E:\练习\mygames.txt
		//得到绝对路径名		public String getAbsolutePath()
		System.out.println(file.getAbsolutePath());//E:\练习\mygames.txt
		//得到父文件夹名			public String getParent()  
		System.out.println(file.getParent());//E:\练习
		//判断文件是否隐藏		public boolean isHidden()
		System.out.println(file.isHidden());//false
		//判断文件是否存在		public boolean exists()
		System.out.println(file.exists());//true
		//判断文件是否可读		public boolean canRead()
		System.out.println(file.canRead());//true
		//判断是否是目录    		public boolean isDirectory()
		System.out.println(file.isDirectory());//false
		//判断是否是文件   	 	public boolean isFile()
		System.out.println(file.isFile());//true
		//是否是绝对路径名称	public boolean isAbsolute()
		System.out.println(file.isAbsolute());//true
		//文件最后的修改时间	public long lastModified()
		System.out.println(file.lastModified());//1573723946646
		//文件的大小			public long length()
		System.out.println(file.length());//0
		
		Date date = new Date(1573723946646L);
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-DD HH:mm:ss");
		String dateStr = sdf.format(date);
		System.out.println(dateStr);//2019-11-318 17:32:26
		
		
	}
}

文件的创建
public boolean createNewFile() 若文件不存在则创建新文件
public boolean mkdir() 创建目录
public boolean mkdirs() 创建目录及不存在的父目录
文件的删除
public boolean delete() 删除文件及空目录
文件的重命名
public boolean renameTo(File dest) 重命名为dest

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

/*
 * 文件的创建
 *  	boolean createNewFile() : 若文件不存在则创建文件
 *  		注意:
 *  			1.该方法会抛出一个IOException异常,该异常是一个编译时异常,必须处理
 *  			2.该方法创建的是文件,而不是文件夹
 *  			3.如果文件已经创建,就不会再创建了,返回false
 *  	boolean mkdir() 
 *  		注意:
 *  			1.该方法没有异常
 *  			2.该方法创建的是文件夹
 *  			3.如果文件已经创建,就不会再创建了,返回false
 *  	boolean mkdirs() 
 *  		注意:
 *  			1.该方法没有异常
 *  			2.该方法创建的是连续的文件夹
 *  			3.如果文件已经创建,就不会再创建了,返回false
 *  记住:无论做任何的操作,第一步都必须封装文件路径
 *  
 *  * 文件的删除
 * boolean delete() 
 * 		删除此抽象路径名表示的文件或目录。
 * 		注意:
 * 			1.既可以删除文件,也可以删除文件夹
 * 			2.删除文件夹,文件夹必须是空的
 * 		那么如何删除带内容的文件?
 * 			1.逐级删除 太麻烦
 * 			2.递归删除
 */

public class Task02 {
	public static void main(String[] args) {
		File file = new File("D:\\iotest");
		//1、在本地磁盘D盘中创建一个iotest文件夹
		System.out.println(file.mkdir());//true
		//2、在文件夹中创建一个以自己名字的拼音组成的文件名
		File file2 = new File("D:\\iotest\\dengyanjian.txt");
		try {
			System.out.println(file2.createNewFile());//true
		} catch (IOException e) {
			e.printStackTrace();
		}
		//3、获取创建的这个文件的最后修改日期并打印到控制台
		File file3 = new File("D:\\iotest\\dengyanjian.txt");
		System.out.println(file3.lastModified());//1573729616560
		Date date = new Date(1573729616560L);
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月DD日 HH时mm分ss秒");
		String format = sdf.format(date);
		System.out.println(format);//2019年11月318日 19时06分56秒
		//4、将创建的这些文件和文件夹全部删除。
		//先删文件
		System.out.println(file2.delete());//true
		//再删空文件夹
		System.out.println(file.delete());//true
		
	}
}
import java.io.File;

/*
 *	.修改功能
 * 	public boolean renameTo(File dest)  重命名为dest
 */

public class Task03 {
	public static void main(String[] args) {
		//在本地磁盘上,选择某个有内容的txt文件,将文件 名修改为test.txt
		File file = new File("E:\\a\\aaa.txt");
		File file2 = new File("E:\\a\\test.txt");
		boolean result = file.renameTo(file2);
		System.out.println(result);//true

		//计算修改名字后的文件的大小,文件的最后修改日 期、文件的名称及文件的父级目录
		System.out.println(file2.getAbsolutePath());//
		System.out.println(file2.length());//12  hello word
		System.out.println(file2.lastModified());//1573731052176
		System.out.println(file2.getName());//test.txt
		System.out.println(file2.getParent());//E:\a
		
		//删除这个文件
		System.out.println(file2.delete());//true
	}
}

文件的遍历

  • public String[] list() 返回file下的文件和目录名称(字符串)
    public File[] listFiles() 返回file下的文件和目录(文件)
    public String[] list(FilenameFilter filter) 根据filter过滤返回file下文件和目录名称
    public File[] listFiles(FileFilter filter) 根据filter过滤返回file下文件和目录

    遍历统计:

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

/*
 * 统计某个文件夹下面所有txt文件的个数
 * E:\My notebook
 */

public class Task04 {
	public static void main(String[] args) {
		
		File file = new File("E:\\My notebook");
		getTxtNember(file);
		getTxtNember2(file);
	}
	//方法一
	public static void getTxtNember(File srcfile) {
		int number = 0;
		File[] files = srcfile.listFiles();
		for (File file : files) {
			String txtname = file.getName();
			if (file.isFile() && txtname.endsWith(".txt")) {
				number++;
			}
		}
		System.out.println(number);//7
	}
	//方法二
	public static void getTxtNember2(File srcfile) {
		File[] files = srcfile.listFiles(new FileFilter() {
			
			@Override
			public boolean accept(File file) {

				return file.getName().endsWith(".txt") && file.isFile();
			}
		});
		System.out.println(files.length); //7
	}
}

遍历打印:

import java.io.File;
import java.util.Scanner;

/*
 * 从键盘输入接收一个文件夹路径,打印出该文件夹下所有的.java文件名
 */

public class Task05 {
	public static void main(String[] args) {

		@SuppressWarnings("resource")
		Scanner input = new Scanner(System.in);
		System.out.print("请输入:");
		String s = input.next();
		File file = new File(s);
		try {
			showJava(file);
		} catch (NullPointerException e) {
			e.printStackTrace();
		} catch (Exception e) {
			e.printStackTrace();
		}

	}

	private static void showJava(File srcfile) {
		// 判断是否为空
		if (srcfile == null) {
			throw new NullPointerException("你再传null给我试一下");
		}
		// 获取到文件夹路径里面所有的文件或者文件夹
		File[] files = srcfile.listFiles();
		// 遍历文件夹或者文件数组,获取到每一个文件或者文件夹
		for (File f : files) {
			// 判断该File是文件还是文件夹
			if (f.isDirectory()) {
				// 是文件夹
				showJava(f);
			} else {
				String fileName = f.getName();
				if (fileName.endsWith(".java")) {
					System.out.println(fileName);
				}
			}
		}

	}
}

遍历删除:

import java.io.File;
import java.util.Scanner;

/*
 * 从键盘接收一个文件或者文件夹路径,删除该文件夹或者文件
 * 
 */

public class Task07 {

	public static void main(String[] args) {
		@SuppressWarnings("resource")
		Scanner input = new Scanner(System.in);
		System.out.print("请输入:");
		String s = input.next();
		//把输入的字符串给到file
		File file = new File(s);
		//判断输入是否为null   抛异常
		try {
			showJava(file);
		} catch (NullPointerException e) {
			e.printStackTrace();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	private static void showJava(File srcfile) {
		// 判断是否为空
		if (srcfile == null) {
			throw new NullPointerException("你再传null给我试一下");
		}
		// 获取到文件夹路径里面所有的文件或者文件夹
		File[] files = srcfile.listFiles();
		// 遍历文件夹或者文件数组,获取到每一个文件或者文件夹
		if (files != null) {
			 遍历文件夹或者文件数组,获取到每一个文件或者文件夹
			for (File f : files) {
				 判断该File是文件还是文件夹
				if (f.isDirectory()) {
					// 是文件夹
					showJava(f);
				} else {
					// 是文件 删除文件
					System.out.println(f.delete() + "已经删除了:" + f.getName() + "文件");
				}
			}
		}
		// 删除文件夹
		System.out.println(srcfile.delete() + "已经删除了" + srcfile.getName() + "文件夹");
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值