黑马程序员_Java基础_IO(3)

---------------------- Android、Java开发期待与您交流! ----------------------

               File类

         输入流和输出流可以对文件的原始内容进行读写操作,但仅限于文件。

         File类是IO包中唯一代表磁盘文件本身信息的类,而不是文件中的内容,操作的对象为磁盘上的文件和目录

         File类定义了一些方法来操纵文件,例如:创建、删除文件及重命名文件
         File类可以修改文件或目录的属性,例如:修改读写权限、更改文件最后被修改的时间、设置文件和目录的所有者或所有用户的执行权限等
         boolean createNewFile():当且仅当不存在具有此抽象路径名指定名称的文件时,不可分地创建一个新的空文件。文件已存在返回false,不存在则返回true
         boolean mkdir():只能创建一级目录
         boolean mkdirs():可以一此创建多级目录
         boolean isDirectory():测试此抽象路径名表示的文件是否是一个目录
         boolean isFile():测试此抽象路径名表示的文件是否是一个文件,和测试是否是目录方法一样,在判断之前先执行boolean exists()方法
         boolean delete(): 删除此抽象路径名表示的文件或目录(只能删除空的目录)
         void deleteOnExit():在虚拟机终止时,请求删除此抽象路径名表示的文件或目录。 
         static File[] listRoots(): 列出可用的文件系统根
         File[] listFiles():返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件。(只能遍历一级目录)
         static String separator:与系统有关的默认名称分隔符,为了方便,它被表示为一个字符串。
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.FilenameFilter;
import java.io.IOException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class FileRelative {

	/**
	 * @param args
	 */
	public static void main(String[] args) throws IOException {
		// printFilePath();
		// fileBaseOp();
		File file = new File("c:\\FileRelative.java");
		//创建抽象路径名所对应的文件
		file.createNewFile();
		// getFileProperties(file);
		getFileInfo(file);
		File dir = new File("c:\\new File");
		//ergodicFile(file);
		//removeDir(dir);
		rename();

	    dir = new File("d:\\workspace\\notepad");
		List<File> list = new ArrayList<File>();
		// fileToList(dir, list);

		File file2 = new File(dir, "listToTxt.txt");
		listToTxt(list, file2);
	}

	/**
	 * 创建File对象的几种方式(但并不实际生成相应的目录或文件)
	 */
	public static void printFilePath() {
		File dir = new File("c:\\new File\\heima\\io");
		File file1 = new File("c:\\new File\\heima\\io", "1.part");
		File file2 = new File("c:\\new File\\heima\\io\\2.part");
		File file3 = new File(dir, "3.part");
		File file4 = new File("d:" + File.separator
				+ "new File\\heima\\io\\4.part");

		System.out.println(dir);
		System.out.println(file1);
		System.out.println(file2);
		System.out.println(file3);
		System.out.println(file4);
	}

	/**
	 * 新建文件和目录
	 * 
	 * @throws IOException
	 */
	public static void fileBaseOp() throws IOException {
		// 通过creatNewFile()新建文件
		boolean flag = false;

		File file = new File("c:\\new File\\heima\\io\\test");
		flag = file.mkdir();
		System.out.println("mkdir:" + flag);
		flag = file.mkdirs();
		System.out.println("mkdirs:" + flag);

		// 删除
		// detletOnExit:file or directory is deleted when virtual machine
		flag = file.delete();
		System.out.println("delete:" + flag);
		flag = file.exists();
		System.out.println("exists:" + flag);
		file = new File("c:\\new file\\heima\\io\\testFile.txt");
		for (int i = 0; i < 2; i++) {
			flag = file.createNewFile();
			System.out.println("createNewFile:" + flag);
			flag = file.exists();
			System.out.println("exists:" + flag);
		}
	}

	/**
	 * 获取获得抽象路径名所对应的文件或目录的属性
	 * 
	 * @param file
	 *            标准文件或目录
	 * @throws IOException
	 */
	public static void getFileProperties(File file) throws IOException {
		boolean flag = true;
		flag = file.exists();
		// 检查file对象对应的文件是否存在
		System.out.println("file.exists():" + flag);
		// 判断文件是否可执行
		flag = file.canExecute();
		System.out.println("canExecute:" + flag);
		// 判断文件是否可写
		flag = file.canWrite();
		System.out.println("canWrite:" + flag);
		// 判断文件是否可读
		flag = file.canRead();
		System.out.println("canRead:" + flag);
		// 判断文件是否隐藏
		flag = file.isHidden();
		System.out.println("isHidden:" + flag);
		// 判断抽象路径名表示的文件是否是一个标准文件
		flag = file.isFile();
		System.out.println("isFile:" + flag);
		// 判断抽象路径名表示的文件是否是一目录
		flag = file.isDirectory();
		System.out.println("isDirectory:" + flag);
		// 判断此抽象路径名是否为绝对路径
		flag = file.isAbsolute();
		System.out.println("isAbsolute:" + flag);
	}
/**
 * 获取抽象路径名所对应的文件或目录的信息
 * @param file
 * @throws IOException
 */
	public static void getFileInfo(File file) throws IOException {
		// FileName
		String name = file.getName();
		System.out.println("name:" + name);
		// getPath
		String path = file.getPath();
		System.out.println("path:" + path);
		// getAbsolutePath
		String absPath = file.getAbsolutePath();
		System.out.println("absPath:" + absPath);
		// getParentPath
		String parPath = file.getParent();
		System.out.println("parPath:" + parPath);
		// length
		long length = file.length();
		System.out.println("length:" + length);
		// lastModified
		long time = file.lastModified();
		// getTotalSpace
		long space = file.getTotalSpace();
		System.out.println("space:" + space);
		if (space > 1024 * 1024) {
			space = space / 1024 / 1024;
			System.out.println("space:" + space + "MB");
		} else {
			System.out.println("space:" + space);
		}

		String lastModified = DateFormat.getInstance().format(new Date(time));
		System.out.println("lastModified:" + lastModified);
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		lastModified = sdf.format(new Date(time));
		System.out.println("lastModified:" + lastModified);

	}

	/**
	 * 给文件重命名
	 * 
	 * @throws IOException
	 */
	public static void rename() throws IOException {
		boolean flag = false;
		File file = new File("d:\\workspace\\notepad\\day20\\name.txt");
		flag = file.createNewFile();
		System.out.println("file.createNewFile:" + flag);
		File file1 = new File("d:\\workspace\\notepad\\day20\\rename.txt");
		flag = file.renameTo(file1);
		System.out.println("file.renameTo:" + flag);

	}
	//遍历目录
	public static void ergodicFile(File file) {
		File[] filesList = file.listFiles();
		for (File file1 : filesList) {
			if (file1.isDirectory()) {
				ergodicFile(file1);
			} else {
				System.out.println(file1);
			}

		}
	}
//级联删除目录
	public static void removeDir(File dir) {
		File[] filesList = dir.listFiles();
		for (File file1 : filesList) {
			if (file1.isDirectory()) {
				removeDir(file1);
			} else {
				file1.delete();
			}
		}
		dir.delete();
	}
//过滤获得指定格式文件并添加到集合
	public static void fileToList(File dir, List<File> list) {

		File[] files = dir.listFiles();
		for (File file1 : files) {
			if (file1.isDirectory()) {
				fileToList(file1, list);
			} else {
				if (file1.toString().endsWith(".java")) {
					list.add(file1);
				}
			}
		}
	}

	public static void listToTxt(List<File> list, File file) throws IOException {
		BufferedWriter bfw = null;
		try {
			bfw = new BufferedWriter(new FileWriter(file));
			for (File file1 : list) {
				String absPath = file1.getAbsolutePath();
				bfw.write(absPath);
				bfw.newLine();
				bfw.flush();
			}
		} catch (Exception e) {
			throw e;
		} finally {
			try {
				if (bfw != null) {
					bfw.close();
				}
			} catch (Exception e) {
				throw e;
			}
		}
	}

}



---------------------- Android、Java开发期待与您交流! ----------------------
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值