黑马程序员--IO流1



IO流1--对硬盘文件的操作

 * File:因为数据在硬盘上最常见的方式,就是文件。而文件本身有很多的属性,比如说:文件大小,是否可读啊,是否隐藏啊。

 *那么,java为了方便我们 对文件进行操作,就提供了File类供我们使用。
 *
 * 看API学习File类。
 *
 * File既可以表示文件,也可以表示文件夹。(目录)
 

一、File文件指定文件路径


* 构造方法:
 * File(String pathname):根据指定的路径创建File对象。
 * File(String parent, String child):根据指定的父文件夹和子文件或者文件夹创建File对象
 * File(File parent, String child):根据指定的父文件夹对象和子文件或者文件夹创建File对象

public class FileDemo {
	public static void main(String[] args) {
		// 方式1
		File file = new File("d:\\a.txt");
		File file2 = new File("d:\\aaa");

		// 方式2
		File file3 = new File("d:\\", "a.txt");
		File file4 = new File("d:\\", "aaa");

		// 方式3
		File file5 = new File("d:\\");
		File file6 = new File(file5, "a.txt");
		File file7 = new File(file5, "aaa");
	}
}
二、File创建文件和文件夹。

创建功能:
 *   创建文件:public boolean createNewFile()
 *          如果指定的文件不存在,就创建。如果存在,就不创建。
 *   创建文件夹:public boolean mkdir()
 *     创建指定的目录,如果存在,就不创建。
 *       public boolean mkdirs()
 *     创建指定的目录,如果存储,就不创建。这个时候,如果父目录不存在,它也会自动创建。
<pre class="java" name="code">public class FileDemo {
	public static void main(String[] args) throws IOException {
		// 创建文件
		File file = new File("d:\\a.txt");
		System.out.println("createNewFile:" + file.createNewFile());

		// 创建文件 忘了写路径名称了,以当前项目路径所在路径为父目录
		File file2 = new File("a.txt");
		System.out.println("createNewFile:" + file2.createNewFile());

		// 创建目录
		File file3 = new File("aaa");
		System.out.println("mkdir:" + file3.mkdir());

		// 创建多级目录 如果想创建一个指定的目录或者文件,要求,父目录必须存在。
		// File file4 = new File("bbb\\ccc");
		// System.out.println("mkdir:" + file4.mkdir());

		// 解决方案:
		// File file5 = new File("bbb");
		// File file6 = new File(file5, "ccc");
		// System.out.println("mkdir:" + file5.mkdir());
		// System.out.println("mkdir:" + file6.mkdir());

		// 如果目录过多,这样做就太麻烦。肿么办呢?
		File file4 = new File("bbb\\ccc");
		System.out.println("mkdirs:" + file4.mkdirs());

		// 创建文件
		File file5 = new File("b.txt");
		System.out.println("mkdir:" + file5.mkdir());
	}
}

 
三、File删除文件文件夹。

* 删除功能:
 *   public boolean delete():既可以删除文件,也可以删除文件夹。取决于你使用的对象。
 * 
 * 注意:
 *   A:如果你删除的目录下还有内容,那么,必须先把所有内容删除完毕后,在删除目录。
 *   B:java语言的删除不走回收站。
public class FileDemo {
	public static void main(String[] args) {
		// 需求:我要删除a.txt
		File file = new File("a.txt");
		System.out.println("delete:" + file.delete());

		// 需求:我要删除aaa
		File file2 = new File("aaa");
		System.out.println("delete:" + file2.delete());

		// 需求:我要删除bbb
		File file3 = new File("bbb");
		System.out.println("delete:" + file3.delete());
	}
}


四、File的判断功能

* 判断功能
 * boolean exists():判断file对象是否存在
 * boolean isFile():判断file对象是否是文件
 * boolean isDirectory():判断file对象是否是文件夹
 * boolean isAbsolute():判断file对象是否是绝对路径
 * boolean canRead():判断file对象是否可读
 * boolean canWrite():判断file对象是否可写
 * boolean isHidden():判断file对象是否隐藏
public class FileDemo {
	public static void main(String[] args) {
		File file = new File("a.txt");

		System.out.println("exists:" + file.exists());// true
		System.out.println("isFile:" + file.isFile());// true
		System.out.println("isDirectory:" + file.isDirectory());// false
		System.out.println("isAbsolute:" + file.isAbsolute());// false
		System.out.println("canRead:" + file.canRead());// true
		System.out.println("canWrite:" + file.canWrite());// true
		System.out.println("isHidden:" + file.isHidden());// false
	}
}

五、File的获取功能


* 获取功能:
 * String getAbsolutePath():绝对路径
 * String getPath():相对路径
 * String getName():文件名称
 * long length():文件大小,单位是字节
 * long lastModified():上次修改时间的毫秒值。

 * public static File[] listRoots():列出可用的系统文件根目录
 * public String[] list():返回的是指定目录下所有文件或者文件夹的名称数组
 * public File[] listFiles():返回的是指定目录下所有文件或者文件夹对象数组

public class FileDemo {
	public static void main(String[] args) {
		// 需求:指向文件
		File file = new File("bbb\\ccc\\a.txt");

		System.out.println("getAbsolutePath:" + file.getAbsolutePath());
		System.out.println("getPath:" + file.getPath());
		System.out.println("getName:" + file.getName());
		System.out.println("length:" + file.length());
		System.out.println("lastModified:" + file.lastModified());
		File[] fileArray = file.listFiles();
 		for (File f : fileArray) {
   		System.out.println(f.getName());

		Date d = new Date(file.lastModified());
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		System.out.println(sdf.format(d));
	}
}

* 获取指定目录下指定后缀的文件名称:
 * A:先获取指定目录下所有文件或者文件夹的File数组,然后再遍历的时候进行判断。满足条件的就输出该File的名称。
 * B:直接获取指定目录下满足条件的String(File)数组。然后遍历数组即可。
 *
 * 文件名称过滤器:FilenameFilter
 *   public String[] list(FilenameFilter filter)

public class FileDemo {
	public static void main(String[] args) {
		// 封装目录
		File file = new File("d:\\");

		// 获取满足条件的数组
		String[] strArray = file.list(new FilenameFilter() {
			@Override
			public boolean accept(File dir, String name) {
				// 判断是否是文件,是否是以.mp4结尾
				// System.out.println(dir + "---" + name);
				File file = new File(dir, name); // d:\我的文档
				boolean flag = file.isFile();
				boolean flag2 = name.endsWith(".mp4");
				return flag && flag2;
			}
		});

		// 遍历字符串数组
		for (String str : strArray) {
			System.out.println(str);
		}
	}
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值