java文件操作

File类

表示文件的抽象路径,不代表该路径下一定有该文件.

构造方法

File(String pathname)

pathname是一个文件的抽象路径

File(String parent,String child)

parent是一个路径,child是一个文件名

File(File parent, String child)

实例:

import java.io.File;
public class Test {
	public static void main(String[] args) {
		// File(String pathname)
		File f1 = new File("E:\\test\\a.txt");
		// File(String parent,String child)
		File f2 = new File("E:\\test", "b.txt");
		// File(File parent, String child)
		File f3 = new File("E:\\test");
		File f4 = new File(f3, "c.txt");
		//直接打印是路径
		System.out.println(f1);// E:\test\a.txt
		System.out.println(f2);// E:\test\b.txt
		System.out.println(f4);// E:\test\c.txt
	}
}

常用方法

boolean createNewFile()

  创建当前抽象路径下的文件,如果创建成功则返回true。如果有同名文件则创建失败。该方法自带IOException异常,如果需要创建的文件的目录不存在则创建失败。

boolean mkdir()

  创建当前抽象路径的文件夹,如果创建成功则返回true。当需要创建的文件夹的父目录不存在时则创建失败。如果需要创建的问价已经存在也会创建失败。失败返回false。

boolean mkdirs()

  创建当前抽象路径的文件夹,如果父目录不存在也会创建父目录。创建成功则返回true,如果需要创建的文件夹已经存在了,则创建失败返回false。

实例:


import java.io.File;
import java.io.IOException;
public class Test {
	public static void main(String[] args) throws IOException {
		File f = new File("E:\\test\\aa\\bb");
		System.out.println(f.mkdirs());//true
		File f1 = new File("E:\\test\\aa\\bb\\a.txt");
		System.out.println(f1.createNewFile());//true
	}
}

boolean delete()
  • 删除抽象路径下的文件或文件夹。成功则返回true。

  • 该目录不能为空,多级目录只会删除最后一个项目。例如E:\test\aa\bb\a.txt执行该方法只会删除a.txt其父目录不会被删除。

  • 删除文件夹的时候文件夹必须为空才会被删除。

  • 如果文件或者文件夹正在被访问则无法删除。

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

public class Test {
	public static void main(String[] args) throws IOException {
		File f1 = new File("E:\\test\\aa\\bb\\a.txt");
		System.out.println(f1.delete());//true
		//要想完全删除需要逐级删除
		System.out.println(new File("E:\\test\\aa\\bb").delete());//true
		System.out.println(new File("E:\\test\\aa").delete());//true
		System.out.println(new File("E:\\test").delete());//true
	}
}

注意:

  1. 指定盘符的路径是绝对路径,如果不指定盘符是相对路径。

  2. 没有指定盘符的情况下创建文件或者文件夹会在当前项目下。

  3. mkdirs方法创建文件夹的时候如果指定的路径包含文件,则会以文件的全名称创建文件夹,所以指定该方法的路径时路径不能包含文件

    boolean renameTo(File dest)

重命名抽象流泪路径表示的文件。如果两次的路径相同则只是重命名,如果路径不同,则剪切并重命名。

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

public class Test {
	public static void main(String[] args) throws IOException {
		File f = new File("aaa\\bbb\\a.txt");
		// 重命名并剪切到项目根目录文件夹
		System.out.println(f.renameTo(new File("b.txt")));// true
	}

}

判断类功能

boolean isDirectory()

判断是否是文件夹

boolean isFile() 

判断是否是文件

boolean canRead()

是否可读

boolean canWriter()

是否可写

boolean exists()    

是否存在

boolean isHidden()

是否是隐藏文件

获取类功能

String getAbsolutePath()

获取抽象文件的绝对路径

String getPath()

获取相对路径的字符串

String getName()

返回由此抽象路径名表示的文件或目录的名称

long length()

返回由此抽象路径名表示的文件的长度。

long lastModified()

文件最后一次被修改的时间(时间毫秒值)

获取的高级功能

String[] list()

获取当前某个路径下的所有的文件夹以及文件名称的字符串数组

File[] listFiles()

获取当前某个路径下所有的文件夹以及文件的File数组

//判断E盘目录下是否有后缀名为.jpg的文件,如果有,就输出此文件名称
import java.io.File;
import java.io.IOException;

public class Test {
	public static void main(String[] args) throws IOException {
		File file = new File("e:\\");// e盘的抽象路径
		File[] fiarr = file.listFiles();// 获取e盘下所有文件的File数组
		if (fiarr != null) {// 非空判断
			// 遍历
			for (File f : fiarr) {
				if (f.isFile()) {// 判断是否是文件
					if (f.getName().endsWith(".jpg")) {
						// 返回文件的名称并判断是否为.jpg结尾
						System.out.println(f.getName());
					}
				}
			}
		}
	}

}
/*
23.jpg
24.jpg
55.jpg
 */

FilenameFilter

文件名称过滤器接口只包含一个方法

boolean accept(File dir, String name)

 在 listlistFiles 方法的括号中用匿名内部类的方式实现 FilenameFilter 接口然后重写该方法,可以用来过滤文件。返回值为 true 的时候保留该文件到数组中。

  • dir:获取到的文件的目录
  • name:当前获取到的文件的文件名

重写该方法时需要在方法内规定一些过滤文件的规则。

//判断E盘目录下是否有后缀名为.jpg的文件,如果有,就输出此文件名称
import java.io.File;
import java.io.FilenameFilter;
import java.io.IOException;

public class Test {
	public static void main(String[] args) throws IOException {
		File file = new File("e:\\");// e盘的抽象路径
		String[] list = file.list(new FilenameFilter() {
			// 匿名内部类重写accept方法
			@Override
			public boolean accept(File dir, String name) {
				// 封装一个File类对象new File(dir, name)用于判断该路径是否属于文件。
				// 获取到的抽象路径需要为一个文件且名称的后缀名为.jpg
				return new File(dir, name).isFile() && name.endsWith(".jpg");
			}
		});
		for (String str : list) {// 遍历
			System.out.println(str);
		}
	}
}
/*
23.jpg
24.jpg
55.jpg
 */
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值