File创建文件打包后失败 java java file类创建文件_Java文件File类

🍁 博主 "开着拖拉机回家"带您 Go to New World.✨🍁 🦄
个人主页——🎐 🎐✨🍁 🪁🍁
希望本文能够给您带来一定的帮助🌸文章粗浅,敬请批评指正!🍁🐥

一、学习内容

使用File类进行文件的操作,使用Java.io包完成一共有5个核心类和一个接口

  • 五个核心接口:File、InputStream、OutputStream、Reader、Writer
  • 一个标识接口:Serializable

一、创建文件
二、创建带有子目录的文件
三、取得文件内容
四、总结

二、具体内容

2.1 创建文件

在整个java.io包里面,File类是唯一 一个与文件本身操作有关的类,但是不涉及文件的具体内容,文件本身指的是文件的创建和删除。

要使用File类,那么首先就需要通过他提供的方法定义要操作的文件路径。

构造或方法

释义

public File(String pathname)

设置完整路径

public File(File parent,String child)(安卓)

设置父路径与子文件路径

public boolean createNewFile() throws IOException

创建文件,如果目录不能访问,如果文件重名,或者是文件名称错误

public boolean delete()

删除文件

public boolean exists()

判断存在

范例:示例代码

public class Test2 {
	public static void main(String args[]) throws Exception{
		File file = new File("E:\\sublimefile\\test.txt"); // 设置文件路径
		If (file.exists()) { // 文件存在
			file.delete();
		} else {
			System.out.println(file.createNewFile());
		}
	}
}

以上的程序已经可以完成具体文件的创建,此时存在两个问题。

  • 在window系统里面支持的是:“\”路径分隔符,Linux使用的是“/”路径分隔符;
    |--------在File类提供了一个常量:public static final String separator

但是这样代码 看起来有点 长

File file = new File("E:" + File.separator +  "sublimefile" + File.separator + "test.txt"); // 设置文件路径

2.2 创建带有子目录的文件

以上已经实现了文件的创建工作,但是这个时候是直接创建在了根路径下,下面来创建包含有子目录的文件

File file = new File("E:" + File.separator +  "sublimefile" + File.separator + "demo" + File.separator + "test.txt"); // 设置文件路径

方法

释义

public File getParentFile()

找到父路径

public boolean mkdirs()

创建多级目录(父路径)

代码示例:

public class Test2 {
	public static void main(String args[]) throws Exception{
		File file = new File("E:" + File.separator +  "sublimefile" + File.separator 
				+ "hello" +File.separator + "demo" + File.separator + "test.txt"); // 设置文件路径
		System.out.println(file.getParentFile().exists());
		If (! file.getParentFile().exists()) { // 父路径不存在
			file.getParentFile().mkdirs(); // 创建父路径
		}
		If (file.exists()) { // 文件存在
			file.delete();
		} else {
			System.out.println(file.createNewFile());
		}
	}
}

2.3 取得文件内容

在File类里面提供了一系列取得文件信息内容的操作功能:

方法

释义

public long length()

取得文件大小

public boolean isFile()

判断是否是文件

public boolean isDirectory()

判断是否是目录

public long lastModified()

最近一次修改日期

代码示例:

import java.io.File;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Test2 {
	public static void main(String args[]) throws Exception {
		File file = new File("E:" + File.separator + "jpg.jpeg");
		if (file.exists()) {
			System.out.println("是否是文件:" + (file.isFile()));
			System.out.println("是否是目录:" + (file.isDirectory()));
			System.out.println("文件大小:" + new BigDecimal((double) file.length() / 1024 / 1024).divide(new BigDecimal(1),
					2, BigDecimal.ROUND_HALF_UP) + "M");
			System.out.println("上次修改时间" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date(file.lastModified())));
		}
	}
}

File创建文件打包后失败 java java file类创建文件_文件_02


整个取得过程里面取的文件相关信息,但是不包含有文件的内容。


方法

释义

public String[] list()

列出目录下的信息

public String[] list(FilenameFilter filter)

列出所有信息以File类包装

代码示例:

public class Test2 {
	public static void main(String args[]) throws Exception {
		File file = new File("E:" + File.separator);
		if (file.isDirectory()) { // 现在给出的一个路径
			String[] result = file.list();
			for (int x = 0; x < result.length; x++) {
				System.out.println(result[x]);
			}
		}
	}
}

File创建文件打包后失败 java java file类创建文件_文件_03


代码示例:

public class Test2 {
	public static void main(String args[]) throws Exception {
		File file = new File("E:" + File.separator);
		if (file.isDirectory()) { // 现在给出的一个路径
			File[] result = file.listFiles();
			for (int x = 0; x < result.length; x++) {
				System.out.println(result[x]);
			}
		}
	}
}

下面看运行结果: 就不一样了

File创建文件打包后失败 java java file类创建文件_文件_04


为了很好地体验出以上的操作的好处,下面输出一个类似于资源管器的界面。

示例代码(类似于资源管理器):

public class Test2 {
	public static void main(String args[]) throws Exception {
		File file = new File("E:" + File.separator);
		if (file.isDirectory()) { // 现在给出的一个路径
			File[] result = file.listFiles();
			for (int x = 0; x < result.length; x++) {
				System.out.println(result[x].getName() + "\t\t\t" 
			+ new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
			.format(new Date(result[x].lastModified())) + "\t\t" 
			+ (result[x].isDirectory() ? "文件夹":"文件") 
			+ new BigDecimal((double) result[x].length() / 1024 / 1024).divide(new BigDecimal(1),
					2, BigDecimal.ROUND_HALF_UP) + "M");
			}
		}
	}
}

File创建文件打包后失败 java java file类创建文件_Java文件File类_05


通过系列验证可以发现,取得对象列表会更加的方便,因为可以继续对列表进行操作。

思考题:列出指定目录下的所有子目录

原则:如果现在给定的依然是一个目录,则应该列出里面所有的组成,应该使用递归的方式完成。

代码示例(列出指定目录下的所有子目录):

public class Test2 {
	public static void main(String args[]) throws Exception {
		File file = new File("E:" + File.separator );
		print(file);
	}
	public static void print(File file) {
		if (file.isDirectory()) {  // 如果现在给定的是一个路径
			File[] result = file.listFiles(); // 列出子目录
			if (result != null) {
				for (int x = 0; x < result.length; x++) {
					print(result[x]);
				}
			}
		}
		System.out.println(file);
	}
}

如果将以上输出操作换为删除操作,将会变为恶性程序。

三、总结

  1. File类本身只是操作文件的,不涉及到内容;
  2. File中的重要方法:
    *设置完整路径:public File(String pathname);
    *删除文件:public boolean delete();
    *判断文件是否存在:public boolean exists()
    *找到父路径:public File getParentFile();
    *创建目录:public boolean mkdir();
  3. 在使用File类操作的时候路径的分隔符使用:File.separator;