java IO编程(一)文件操作类:File

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huangxin388/article/details/84060606

        学习过程中某个知识点长时间不用老是忘记,在此记录,下次忘记容易复习。        

        在java.io包中,如果要进行文件自身的操作(例如:创建、删除等),只能依靠java.io.File类完成。File类中的常用方法在下表中列出

File类常用操作方法
No. 方法 类型 描述
1 public File(String pathname) 构造 c传递完整文件操作路径
2 public File(File parent,String child) 构造 s设置父路径与子文件路径
3 public boolean createNewFile() throws IOException 普通 c创建新文件
4 public boolean exists() 普通 判断给定路径是否存在
5 public boolean delete() 普通 删除指定路径的文件
6 public File getParentFile() 普通 取得当前路径的父路径
7 public boolean mkdirs() 普通 创建多级目录
8 public long length() 普通 取得文件大小,以字节为单位返回
9 public boolean isFile() 普通 判断给定路径是否是文件
10 public boolean isDirectory() 普通 判断给定路径是否是目录
11 public long lastModified() 普通 取得文件的最后一次修改日期时间
12 public String[] list() 普通 列出指定目录中的全部内容
13 public File[] listFiles() 普通 列出所有的路径以File类对象包装

:File类中提供的方法并不涉及文件的具体内容,只是针对文件本身的操作。

        下面通过几个小例子练习File类中方法的使用

1.给定一个文件的完整路径,判断文件是否存在,如果存在则将该文件删除并提示文件已删除,否则创建指定文件

package com.tjut.IOTest;

import java.io.File;
import java.io.IOException;
/**
 * Windows中文件分隔符为\
 * Linux中文件分隔符为/
 * java为了实现跨平台特性使用常量File.separator来表示分隔符
 * 之所以separator常量没有大写,是因为JDK 1.0中常量与变量的定义规则相同
 * @author 竹轩听雨
 *
 */
public class IOTest01 {
	public static void main(String[] args) throws IOException {
		/**
		 * 实例化File对象
		 * 如果文件存在则将其删除,不存在则创造文件
		 */
		File file = new File("d:" + File.separator + "test.txt");
		//此句在Windows中可替换为File file = new File("d:\\test.txt");
		if(file.exists()) {//如果文件已存在
			file.delete();//删除指定文件
			System.out.println("文件已删除");//提示
		} else {//否则
			System.out.println(file.createNewFile());//创建指定文件
		}
	}

}

2.创建带路径的文件。如果给定的文件路径为根路径则直接利用createNewFile()方法进行创建;如果要创建的文件存在目录,那么无法将其创建,应先创建父路径再创建文件

package com.tjut.IOTest;

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

public class IOTest02 {
	/**
	 * 如果文件路径不存在则创建路径
	 * 否则创建指定路径下的指定文件
	 * @param args
	 * @throws IOException
	 */
	public static void main(String[] args) throws IOException {
		File file = new File("d:" + File.separator + "Demo" + File.separator + "Hello" + File.separator + "test.txt");
		if(!file.getParentFile().exists()) {//如果父路径不存在
			file.getParentFile().mkdirs();//创建父路径
		}
		System.out.println(file.createNewFile());//创建文件
	}

}

3.判断指定路径的文件是否存在,如果存在则判断其是否是文件,是否是目录,并输出其文件大小及上次修改时间。

package com.tjut.IOTest;

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

public class IOTest03 {
	/**
	 * 判断指定文件是否存在
	 * 如果存在则列出一系列文件信息
	 * @param args
	 */
	public static void main(String[] args) {
		File file = new File("d:" + File.separator + "1.jpg");
		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())));
		}
	}

}

4.列出C盘跟目录下的所有目录

package com.tjut.IOTest;

import java.io.File;

public class IOTest04 {
	/**
	 * 列出C盘根目录下的所有目录
	 * @param args
	 */
	public static void main(String[] args) {
		File file = new File("c:" + File.separator);
		if(file.isDirectory()) {
			File results[] = file.listFiles();
			for(int i = 0;i < results.length;i++) {
				System.out.println(results[i]);
			}
		}
	}

}

 5.列出C盘根目录下的所有目录,包括目录中的目录,使用递归完成

package com.tjut.IOTest;

import java.io.File;

public class IOTest05 {
	/**
	 * 列出C盘中的所有目录
	 * 包括目录中的目录
	 * 采用递归完成
	 * @param args
	 */
	public static void main(String[] args) {
		File file = new File("c:" + File.separator);
		print(file);
	}
	
	public static void print(File file) {
		if(file.isDirectory()) {
			File results[] = file.listFiles();
			if(results != null) {
				for(int i = 0;i < results.length;i++) {
					print(results[i]);
				}
			}
		}
		System.out.println(file);
	}

}

猜你喜欢

转载自blog.csdn.net/huangxin388/article/details/84060606