文件类和Map

集合之Map

1. HashMap
Map的主要实现类,基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。HashSet的底层是HashMap,TreeSet的底层是TreeMap。

  • HashMap中key的特点:
    1、无序(添加顺序和取出顺序不一致)
    2、不能重复(会覆盖)

  • HashMap和Hashtable的区别?
    1、参考ArrayList/Vector StringBuilder/StringBuffer
    2、HashMap支持key和value的值是null值,而Hashtable会报NullPointerException

  • HashMap的增删改查

Map<String,String> map = new HashMap<String,String>();
// 元素都是成对存放的(键值对)  增加元素
map.put("zhagnsan", "123456");
map.put("lisi", "6543121");
map.put("wangwu", "456789");
map.put("zhaoliu", "987654");
// 取出元素,根据key取value
String value = map.get("zhangsan");
System.out.println(value);
// 修改元素,元素的替换是通过key来替换value
map.put("lisi","21");
System.out.println(map);
// 删除元素,通过key删除键值对
map.remove("zhangsan");
System.out.println(map);
  • 取得HashMap中所有的键或值
// 取得所有的key
Set<String> set1 = map.keySet();
System.out.println(set1);
// 取得所有的value
// 1、使用迭代器
Set<String> set = map.keySet();
Iterator<String> it = set.iterator();
while(it.hasNext()){
    String value = it.next();
    System.out.println(value);
}
// 2、foreach
for (String value : set) {
    System.out.println(value);
}
// 3、转为数组再输出
String[] strArr = set.toArray(new String[]{});
for (String string : strArr) {
    System.out.println(string);
}

// 直接获取所有的键值对
Set<Entry<String,String>> set2 = map.entrySet();
System.out.println(set2);

文件——File类

文件和目录路径名的抽象表示形式。

// file对象只是本地硬盘文件的抽象表示,跟具体有没有该文件无关。
File file = new File("F:/abc/a.txt");
try {
    file.createNewFile();// 创建文件,若文件存在则不创建
} catch (IOException e) {
    e.printStackTrace();
}

//File也可以表示为一个文件夹
String path = "F:/abc/";
String fileName = "a.txt";
File fileDir = new File(path);// 文件夹
// 通过目录加文件名的形式创建文件
File file = new File(fileDir,fileName);// 与上面一样效果
try {
    file.createNewFile();
} catch (IOException e) {
    e.printStackTrace();
}

// 判断一个file对象是文件还是文件夹
System.out.println(fileDir.isDirectory());// true
System.out.println(fileDir.isFile());// false
System.out.println(file.isFile());// true
System.out.println(file.isDirectory());// false

// 获得File的文件名和路径
System.out.println(file);// F:\abc\a.txt
System.out.println(file.getName());// 文件名:a.txt
// 路径:F:\abc,返回值为File
System.out.println(file.getParentFile());
// 路径:F:\abc,返回值为String
System.out.println(file.getParent());

// 文件重命名
File fileOld = new File("F:/abc/a.txt");
File fileNew = new File("F:/abc/b.txt");
fileOld.renameTo(fileNew);// 重命名为b.txt

// 显示一个文件夹下所有的文件
File file = new File("F:/abc/");
File[] f = file.listFiles();// 返回一个File数组
String[] strArr = file.list();// 返回一个String数组

// 删除一个文件&文件夹
file.delete();// 删除文件
fileDir.delete();// 只能删除空的文件夹,非空则不能删除

给一个文件夹下的所有文件重命名为1,2,3…,保留文件的后缀名

File file = new File("F:/abc/");
File[] f = file.listFiles();
int i = 1;
for(File fi : f){
    fi.renameTo(new File("F:/abc/" + i + fi.getName().substring(fi.getName().lastIndexOf("."))));
    i++;
}

文件名过滤器—FilenameFilter

将一个文件夹里的所有.java文件取出

File file = new File("F:/abc/");
String[] fileArr = file.list(new FilenameFilter() {
    @Override
    public boolean accept(File dir, String name) {
        if(name.endsWith(".java")){
            return true;// true则放入返回的数组中
        }
        return false;
    }
});
for(String str : fileArr){
    System.out.println(str);
}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值