Java I/O流之File类,文件的属性、创建目录、文件的创建与删除

当我们在使用app或者网站时,经常会使用一些功能。比如保存图片到本地,从本地提交文件到目标地址等等,这都少不了输入输出流。所以,今天我们就从简单的输入输出流开始说起。

一、File类

在输入输出流中,file类是最基本的类。我们常用File类的对象来获取文件本身的一些信息,包括文件的长度、文件的读写权限、文件所在目录。需要注意的是,该类并不涉及对文件的读写操作。就只是获取文件的一些属性而已。

File对象的三种构造方法:

File(String filename);
File(String directoryPath,String filename);
File(File dir,String filename);

注:filename是文件名称,directoryPath是文件路径,dir是目录。当使用第一种构造方法创建文件时,该文件的存储位置在当前应用程序的目录中。

二、文件的属性

File类的对象可以获取文件本身的一些信息,下面我们看示例:

import java.io.File;

public class Main{
	public static void main(String[] args) {
		File file = new File("E:\\Java","text.txt");
		System.out.println("文件名称为:"+file.getName());
		System.out.println("文件是否可读:"+file.canRead());
		System.out.println("文件长度:"+file.length());
		System.out.println("文件的绝对路径:"+file.getAbsolutePath());
	}
}

在这里插入图片描述
在这里插入图片描述
下面给出所有的文件属性方法:

public String getName()			获取文件的名字
public boolean canRead()		判断文件是否是可读的
public boolean canWrite()		判断文件是否可被写入
public boolean exists()			判断文件是否存在
public long length()			获取文件的长度(单位是字节)
public String getAbsolutePath()	获取文件的绝对路径
public String getParent()		获取文件的父目录
public boolean isFile()			判断文件是否是普通文件,而不是目录
public boolean isDirectory()	判断文件是不是一个目录
public boolean isHidden()		判断文件是否是隐藏文件
public long lastModified()		获取文件最后修改时间(时间是从1970年一月一日0点至文件最后修改时刻的毫秒数)

接着,我们还可以通过createNewFile()方法创建一个新文件。通过delete()方法删除文件。

import java.io.File;

public class Main{
	public static void main(String[] args) {
		File file = new File("E:\\Java","test.txt");
		if (!file.exists()) {
			try {
				file.createNewFile();
				System.out.println("创建成功!");
			} catch (Exception e) {
				// TODO: handle exception
			}
		}
	}
}

在这里插入图片描述
在这里插入图片描述

import java.io.File;

public class Main{
	public static void main(String[] args) {
		File file = new File("E:\\Java","test.txt");
		if (file.exists()) {
			try {
				file.delete();
				System.out.println("删除成功!");
			} catch (Exception e) {
				// TODO: handle exception
			}
		}
	}
}

在这里插入图片描述
在这里插入图片描述

三、目录的创建及属性

File对象调用方法public boolean mkdir()创建一个目录,在创建目录时,一般将路径作为参数传给对象,然后再使用对象调用mkdir()方法。

import java.io.File;
public class Main{
	public static void main(String[] args) {
		File file = new File("E:\\Java\\a");
		file.mkdir();
	}
}

在这里插入图片描述
如果需要创建多层目录,需调用mkdirs()方法

import java.io.File;
public class Main{
	public static void main(String[] args) {
		File file = new File("E:\\Java\\a\\b\\c");
		file.mkdirs();
	}
}

在这里插入图片描述
目录属性:

列出目录中的文件:

public String[] list()				用字符串形式返回目录下的全部文件
public File[] listFiles()			用File对象形式返回目录下的全部文件
public String[] list(FilenameFilter obj)用字符串形式返回目录下的指定类型的所有文件
public File[] listFiles(FilenameFilter obj)用File对象形式返回目录下的指定类型的所有文件
import java.io.File;
public class Main{
	public static void main(String[] args) {
		File file = new File("E:\\Java");
		String []filename = file.list();
		for (String string : filename) {
			System.out.println(string);
		}
	}
}

在这里插入图片描述
由上面运行结果可以看出,返回的文件只是当前目录下的所有文件,包括目录与文本文件。但是并不包含深层目录文件。

import java.io.File;
public class Main{
	public static void main(String[] args) {
		File file = new File("E:\\Java");
		File []filename = file.listFiles();
		for (File string : filename) {
			System.out.println(string);
		}
	}
}

在这里插入图片描述
list()方法和listFiles()方法的区别就是打印输出的形式不同,listFiles()方法将整个路径都打印出来。

另外需注意,当File对象调用list(FilenameFilter obj)带参数的方法时,参数obj不断回调接口方法accept(File dir,String name),该方法中的参数dir为调用list的当前目录dirFile,参数name被实例化为dirFile目录中的一个文件名,当接口方法返回true时,list方法就将名字为name的文件存放到返回的数组中。

public boolean accept(File dir,String name);
发布了89 篇原创文章 · 获赞 207 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_43729943/article/details/105095917