MapAndIo

Map和File类

1. Map双边队列
1.1 Map概述
键值对结构
	Key=Value
	key不可以重复,一个key对应一个value
	value可以重复,但是不得单独存在
	
	常见数据展示/存储方式
		MySQL XML JSON HTML..
		姓名 苟磊
		年龄 16岁
		性别 男
		家庭住址 唐宁街10号

Map结构大量的使用在数据传输的过程中,包括从前端到Java Servlet
	Map request.getParameterMaps(); [后期很常用]
	BeanUtils.populate(Object bean, Map keyValue) [用的很开心]
1.2 Map组织架构
interface Map<K, V>	
	泛型要求约束两个数据,一个对应键 K 一个对应值 V
--| class HashMap<K, V>
	底层存储数据的结构是一个哈希表结构,存储依赖于键(Key);
--| class TreeMap<K, V>
	底层存储数据的结构是一个二叉树结构,存储比较要求比较内容是键(Key);

涉及到的方法
增
	put(K k, V v);
		添加符合Map要求的键值对数据到Map双边队列中。【存在泛型约束】	
	putAll(Map<? extends K, ? extends V> map);
		添加连一个Map双边队列对象到当前Map中,要求参数Map存储的K和V符合当前调用
		方法的Map对象要求。
	
删
	remove(Object key);	
		根据指定Key删除对应的键值对
	clear();
		清空整个Map双边队列
改
	put(K k, V v);
		如果键存在,修改对应的value,如果键不存在,添加对应键值对。
查
	int size();
		当前Map双边队列中的键值对个数
	int isEmpty();
		判断当前Map双边队列是否为键值对为空 return 0 == size();
	boolean containsKey(Object key);
		判断指定Key是否在当前Map双边队列中存在
	boolean containsValue(Object value);
    	判断指定Value是否在当前Map双边队列中存在
	Set<K> keySet();
		返回当前Map双边队列中Key对应的Set集合
	Collection<V> values();
		返回当前Map双边队列中Value对应的Collection集合
    V get(Object key);
		根据对应Key获取对应的value

单独学习方法:【重头戏】
	Set<Map.Entry<K, V>> entrySet();
		Entry ==> 键值对 
			class Entry<K, V> {
				K k;
				V v;
			}
			Entry可以认为是Map双边队列的【成员内部类】
            Entry是一个键值对对象。
    Entry键值对数据类型中存在的方法
        K getKey();
			获取键值对中Key对应数据
        V getValue();
			获取键值对中Value对应数据
        v setValue(V v);
			修改键值对Value数据
2. File类
2.1File类概述
File是SUN公司提供给Java程序员操作文件或者文件夹的一种方式,并且提供了对应的
	增删改查方法。

相对路径
	从当前工作目录去往其他目录的一个【相对路径】
	这里会使用到 . 和 ..
	. 表示当前工作目录
	.. 表示当前工作目录的上级目录
	
绝对路径
	从根盘符或者根目录去往指定文件或者文件夹的绝对路径,并且是一个【唯一路径】
	Linux中采用的方式是根目录方式,也是Java WEB项目项目采用方式!!!
	windows操作系统中是存在盘符。

File类构造方法
	File(String pathName);
		根据指定的路径直接创建对应的File类对象
	File(String parent, String child);	
		根据指定父目录String路径,和子文件或者子文件夹名字创建对应的File类对象
	File(File parent, String child);	
		根据父目录File类对象,和子文件或者子文件夹名字创建对应的File类对象
2.2 创建文件和文件夹
boolean createNewFile();
	通过File类对象调用,创建File类对象对应的普通文件
	创建成功返回true,失败返回false
	失败原因
		1. 路径不合法
		2. 对应文件已存在
		3. 对应路径文件夹没有写入权限。
			Linux
            	drwxrwxrwx 
            	d ==> 文件夹
            	r ==> 可读
            	w ==> 可写
            	x ==> 可执行
            	- ==> 未拥有当前权限
            	三个为一组 拥有者 同组人 访客
            	drwxr-xr-x 文件夹
            	-rwxr-xr-x 普通文件
            	
boolean mkdir();
	通过File类对象调用,创建File类对象对应的文件夹
	创建成功返回true,失败返回false
	
boolean mkdirs();
	BT方法
	通过File类对象调用,创建File类对象对应的文件夹。并且在条件允许的情况下,可以
    创建目标文件夹之前的中间文件夹。
boolean renameTo(File dst);
	移动,重命名,移动重命名
	通过File类对象调用,文件最终目标为dst参数File类对象。
2.3 删除文件或者文件夹
boolean delete();
	通过File类对象调用,删除调用当前delete方法的对应文件或者文件夹
	【要求】
		删除文件夹不为空,无法删除!!! 
void deleteOnExit();
	通过File类对象调用,给予对应文件或者文件夹一个删除标记,当前程序彻底退出之后,在进行删除操作
	一般用于程序在正常退出之后,删除当前程序的缓冲文件,操作日志...从而节约磁盘空间
【注意】
	以上删除操作,都是从电脑中,直接抹掉数据!!!
2.4 获取文件或者文件夹属性方法
以下方法是唬人的,和当前文件或者文件夹是否存在完全无关:
	String getPath();
		获取当前File类对象创建使用路径
	String getName();
		获取当前File类对象对应的文件名字或者文件夹名字
	String getParent();
		获取当前File类对象对应文件或者文件夹的上级目录路径
	String getAbsolutePath();
		获取当前File类对象对应文件或者文件夹的绝对路径[有点用!!!]

有用方法:
	long length();
		返回当前文件占用的硬盘空间字节数,
		如果是文件夹返回值有可能是0L有可能是4096L
	long lastModified();
		最后一次修改时间,返回值类型是long类型,时间戳
		1970010100:00:00 到 指定时间的秒数
		目前中国采用的时区是北京的东8
2.5 判断方法【重点】
boolean exists();     
	判断文件或者文件是否存在
boolean isFile();
	判断是否是普通文件
boolean isDirectory();
	判断是否是文件夹
boolean isHidden();
	判断是否是隐藏文件或者文件夹
boolean isAbsolute(); 
	判断当前路径对应的文件或者文件夹是否是绝对路径
2.6 文件列表方法
package com.qfedu.b_file;

import java.io.File;

public class Demo7 {
	public static void main(String[] args) {
		/*
		 * 有且只针对于Windows操作系统,可以获取当前电脑中的所有盘符
		 */
		File[] listRoots = File.listRoots();
		for (File file : listRoots) {
			System.out.println(file);
		}
		
		System.out.println();
		
		File file = new File("D:\\Program Files\\Java\\jdk1.8.0_241");
		/*
		 * 获取当前指定目录下的所有子文件和子文件夹名字
		 */
		String[] list = file.list();
		for (String string : list) {
			System.out.println(string);
		}
		
		System.out.println();
		
		/*
		 * 获取当前指定目录下所有子文件和子文件夹的File对象数组
		 */
		File[] listFiles = file.listFiles();
		for (File file2 : listFiles) {
			System.out.println(file2);
		}
	}
}

2.7 文件名过滤器
项目中使用的过滤器
	interface MyFilter {
		boolean accept(Worker w1);
	}

文件列表操作中也存在使用文件名过滤器
	
FilenameFilter
	需要完成的方法
	boolean accept(File dir, String fileName);
	dir:
		当前过滤操作的文件夹File类对象
	fileName:
		当前文件夹下的子文件名或者子文件夹名

需求:
	在指定目录下只获取Java文件!!!
	1. 首先必须是一个文件
	2. 要求当前文件的拓展名必须是一个.java
	3. 有可能出现后缀名是大写!!!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值