IO流(下)


File类

File类用来将文件或文件夹封装成对象,方便对文件或文件夹进行操作

File对象还可以作为参数进行传递

File类常见方法操作:

构造方法:
1、File(文件名)
  File file=new File(文件名):根据指定目录,创建File对象
创建一个File对象,并指向指定路径
2、File(父目录(文件夹),文件名)
  File file=new File(路径,文件名):将File对象指向某个路径下的文件
3、File(父文件夹,文件名)

代码示例:

// 方式1
		File file1 = 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");

创建:
1、创建文件:createNewFile(),当文件不存在时,创建一个空文件
默认路径:当前项目

2、创建文件夹:mkdir():创建此抽象路径名指定的目录
      mkdirs():创建多级文件夹

代码示例:

// 创建文件
		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());

		// 解决方案:可以通过mkdirs来创建多级文件夹
		File file4 = new File("bbb\\ccc");
		System.out.println("mkdirs:" + file4.mkdirs());

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

删除:Java的删除,不走回收站
1、删除:delete(),删除此抽象路径表示的文件或目录
如果删除的文件夹内还有内容,不能删除
必须先删除这个文件夹中的内容
2、deleteOnExit(),当虚拟机终止时,删除文件或目录(多用于临时文件)

/*
 * 注意:
 *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());
	}
}
判断:
1、exists():文件或文件夹是否存在
2、isDirectory():是否是一个目录
3、isFile():是否是文件
4、isHidden():是否是隐藏文件
5、isAbsolute():是否是绝对路径
6、canRerad():文件是否可读
7、canWrite():文件是否可写

File file = new File("a.txt");
//判断文件是否存在
System.out.println("exists:" + file.exists());
//判断是否是文件
System.out.println("isFile:" + file.isFile());// 
//判断是否是文件夹
System.out.println("isDirectory:" + file.isDirectory());
//判断是否是绝对路径
System.out.println("isAbsolute:" + file.isAbsolute());
//判断文件是否能被读
System.out.println("canRead:" + file.canRead());
//判断文件是否能被写
System.out.println("canWrite:" + file.canWrite());
//判断文件是否是隐藏文件
System.out.println("isHidden:" + file.isHidden());


获取:
1、length():文件大小(单位字节)
2、getName():返回文件或文件目录的名称
3、getPath():返回相对路径名字符串
4、getAbsolutePath():返回绝对路径字符串(全路径)
5、getParent():返回抽象路径父目录的抽象路径名
6、lastModified():最后一次的修改时间(修改时间毫秒值)
重要获取功能:
1、listRoots():获取可用的文件系统根目录(盘符)
2、list():列出指定目录下的文件或文件夹的根目录(字符串)
3、listFiles():列出指定目录下的所有文件对象(文件对象)

代码示例:

//创建对象
		File file = new File("d:\\");
		//获取指定目录中的所有文件对象名称,并遍历
		String[] strArray = file.list();
		for (String str : strArray) {
			System.out.println(str);
		}

		//获取指定目录中的所有文件对象,并遍历
		File[] fileArray = file.listFiles();
		for (File f : fileArray) {
			System.out.println(f.getName());
		}


文件名称过滤器:
list(new FilenameFilter(){ 复写accept方法 })

代码示例:获取指定目录下的所有.java文件名称

		//封装目录
		File file = new File("F:\\03.06\\day01");
		// 获取满足条件的数组
		String[] strArray = file.list(new FilenameFilter() {
			public boolean accept(File dir, String name) {
				// 判断是否是文件,是否是以.mp4结尾
				File file = new File(dir, name); 
				boolean flag = file.isFile();
				boolean flag2 = name.endsWith(".java");
				return flag && flag2;
			}
		});
		// 遍历字符串数组
		for (String str : strArray) {
			System.out.println(str);
		}

Properties类

Properties是hashtable的子类。它具备map集合的特点。而且它里面存储的键值对都是字符串。

    Properties是集合中和IO技术相结合的集合容器。
    特点:
可以用于键值对形式的配置文件。
    那么在加载数据时,需要数据有固定格式:键=值。
    可以操作硬盘上的数据
Properties基本操作:
1、设置和获取元素:
代码演示
//创建Properties对象
		Properties p=new Properties();
		p.setProperty("a", "b");
		p.setProperty("c", "d");
		System.out.println(p);
		
		//获取
		String value=p.getProperty("a");
		System.out.println(value);
		
		//重新赋值
		p.setProperty("a", "bb");
		System.out.println(p);
		
		//遍历Properties
		Set<String> s=p.stringPropertyNames();
		for(String str:s){
			System.out.println(str);
			//根据键,获得Properties中的值
			String v=p.getProperty(str);
			System.out.println(v);
		}
2、将流中的数据装入到集合
分析:
1、用一个流和Properties.properties文件关联。
    2、读取一行数据,将该行数据用"="进行切割。
    3、等号左边作为键,右边作为值。存入到Properties集合中即可
代码演示:
//创建Properties对象
		Properties p = new Properties();
		//创建字符读对象
		FileReader fr = new FileReader("Properties.properties");
		//将流中的数据加载进集合。
		p.load(fr);
		fr.close();
		Set<String> s=p.stringPropertyNames();
		for(String str:s){
			System.out.println(str);
			//根据键,获得Properties中的值
			String v=p.getProperty(str);
			System.out.println(v);
		}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值