Map双边队列
键(Key)值(Value)对
程序开发大部分数据都是键值对形式的
MySQL JSON XML 类对象成员变量和存储的数据
从前端发送的数据也可以转成Map格式 ==> 一键生成 ==> 类对象 ==> 一键存储 ==> 数据库
interface Map<K, V>
–| class HashMap<K, V> 哈希表结构
–| class TreeMap<K, V> 底层是树形结构,存储要求K有对应的排序方式
Map双边队列中键(Key)是唯一的,但是值(Value)可以重复
方法
增:
put(K k, V v);
存入一个键值对类型,K和V都要符合泛型约束
putAll(Map<? extends K, ? extends V> map);
存入另一个Map双边队列,并且要求添加的Map双边对接中的K和V都要和当前Map中存储
的K和V一致
删:
remove(Object k);
删除对应K的键(Key)值(Value)对
改:
put(K k, V v);
对应当前K存在,修改对应内容
查:
int size();
当前Map双边队列中,有效键值对个数
boolean isEmpty();
是否为空
boolean containsKey(Object key);
判断指定的Key是否存在
boolean containsValue(Object value);
判断指定Value是否存在
Set keySet();
返回整个Map双边队列中所有Key对应的Set集合
【注意】一个方法使用set结尾,表示该方法返回的是一个集合类型,大多是情况下都
是Set类型
Collection values();
返回整个Map双边队列中所有Value对应的Collection集合
【注意】方法名如果是一个复数,返回值类型集合或者是数组情况居多
EntrySet
Entry 可以认为是键值对对象
定义在Map类内
class Entry<K, V> {
K k;
V v;
}
K,V是完全依赖于Map约束的,这里可以Entry里面保存的是每一个键值对类对象
Map中提供了一个方法
Set<Entry<K, V>> entrySet
返回值是键值对类对象Set集合
Set集合中存储的是Entry类型
Entry类型是带有泛型的
File类
SUN公司提供给开发者操作文件和文件夹的一个类对象。
Java中万物皆对象,计算机中万物皆文件
获取File类有三种方式
【Constructor 构造方法】
File(String pathName);
根据对应的文件路径创建获取对应的File类对象,可以是文件,可以是文件夹。
File(String parent, String child);
根据对应的父目录文件夹路径,以及子文件名或者子文件夹名,创建对应的File类对
象
File(File parent, String child);
根据对应的父目录文件夹File类对象,以及子文件名或者子文件夹名,创建对应File
类对象
相对路径和绝对路径
相对路径
. 当前工作目录
… 父目录/上级目录
正对于当前工作目录和其他文件或者文件夹之间的最小路径
绝对路径
唯一的路径。
Windows操作系统 C D E F… 每一个盘符都是一个根目录开始
C:/Windows/System32
Linux UNIX macOS
存在一个 / 目录文件
/user/liuxiaolei/appliction
路径分隔符
Windows 分隔符 默认是
Linux UNIX macOS 分隔符 默认是 /
Windows是支持Linux分隔符 / 没有任何问题
根据当前系统来区分不同的分隔符 File.separatorChar
创建文件和文件夹
boolean createNewFile();
通过File类对象调用,创建对应File类对象中保存的路径的普通文件。
创建成功返回true,创建失败返回false
返回false的原因:
1. 路径不合法。
2. 对应的文件夹没有写入权限。 rwxr-xr-x
3. 对应当前的文件已经存在。
boolean mkdir();
通过File类对象调用,创建对应File类对象中保存路径的文件夹
创建成功返回true,创建失败返回false
返回false的原因
1. 路径不合法。
2. 对应的文件夹没有写入权限。
3. 对应当前的文件夹已经存在。
boolean mkdirs();
通过File类对象创建其中保存的文件目录的所有对应文件夹,包括中间路径
如果创建失败,返回false
boolean renameTo(File dest);
通过File类对象调用,转为目标File类对象dest
文件/文件夹移动,重命名
删除文件或者文件夹
boolean delete();
通过File类对象调用,删除对应的文件或者文件夹
【要求】
1. 删除的文件或者文件夹都是直接抹掉数据,不是放入回收站
2. 无法删除非空文件夹,文件夹中存在其他内容无法整体删除。
void deleteOnExit();
程序退出时删除对应的文件或者文件夹
用于删除程序运行过程中,留下的日志文件,缓冲文件,操作日志…
文件属性判断
boolean isFile();
判断是否是一个普通文件
boolean isDirctory();
判断是否是一个文件夹
boolean isAbsolute();
判断是否使用了绝对路径
boolean isHidden();
判断是否是隐藏文件
boolean exists();
判断文件是否存在
获取文件属性
String getPath();
获取File类对象保存的路径
String getName();
获取当前File类对象中保存的文件名或者文件夹名
String getParent();
获取当前File类对象对应文件或者文件夹的父目录路径
String getAbsolutePath();
获取当File类对象对应文件或者文件夹的绝对路径
long lastModified()
获取文件的最后一次修改时间,返回值是一个时间戳类型。
从1970年01月01日 00:00:00到现在的秒数。计算机元年
long length();
获取文件的大小,占用硬盘空间字节数。
如果操作的是文件夹,返回0L
列表方法
static File[] listRoots();
通过File类调用,有且针对于Windows操作系统有效,获取当前电脑内所有根盘符对象,如果是Linux,UNIX,macOS是无效的。
File[] listFiles();
通过File类对象调用,获取当前File类对象对应文件夹下的所有子文件或者子文件夹的File类对象数组
String[] list();
通过File类对象调用,获取当前File类对象对应文件夹下的所有子文件或者子文件夹的String类型文件名或者文件夹名字数组
FilenameFilter文件名过滤器
interface FilenameFilter
boolean accept(File dir, String name);
@FunctionalInterface
public interface FilenameFilter {
/**
* Tests if a specified file should be included in a file list.
*
* @param dir the directory in which the file was found.
* @param name the name of the file.
* @return <code>true</code> if and only if the name should be
* included in the file list; <code>false</code> otherwise.
*/
boolean accept(File dir, String name);
}
package com.qfedu.c_file;
import java.io.File;
import java.io.FilenameFilter;
/*
* FilenameFilter过滤器演示
*/
public class Demo8 {
public static void main(String[] args) {
File file = new File("C:\\aaa\\ddd");
// 使用匿名内部类的匿名对象直接作为方法的参数
File[] listFiles = file.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
/*
* dir是当前操作的文件夹类对象
* name是当前文件夹下的子文件或者子文件夹名字
*
* 获取对应的java文件
* 1. 判断是不是普通文件
* 2. 判断当前文件名是不是.java结尾
*/
return new File(dir, name).isFile()
// endsWith字符串方法,判断当前字符串是不是已指定要求结尾
&& name.endsWith(".java");
}
});
// Lambda表达式 JDK1.8新特征
File[] listFile = file.listFiles((dir, name) ->
new File(dir, name).isFile()
&& name.endsWith(".java")
);
for (File file2 : listFile) {
System.out.println(file2.getName());
}
}
}