Day 19 Map 和 File

1,Map

---| Map<K, V> 双列集合,这是一个接口

  ------| HashMap 实现类
  ------| TreeMap 
 
  K:Key 键 !!! 唯一值!!! 不允许重复!!!
  V:Value 值 一个键(Key)对应一个值(Value) 可以重复的
 
  在Map<K, V> 双列集合中,保存的只能是一个键(Key)值(Value)对!
  Map中要学习的方法:
 
  put(K key, V value); 添加一个键(Key)值(Value)对
  putAll(Map<? extends K, ? extends V> map);
  添加一个符合数据类型的Map双列集合
 
  clear(); 清空所有的键(Key)值(Value)对
  remove(Object key); 根据Key删除对应的键(Key)值(Value)对
 
  put(K key, V value); 当键(Key)存在时,这个操作是重新修改值(Value)
   
  size(); 获取键值对个数
  get(Object key); 通过键(Key)找出对应的值(Value)
  containsKey(Object key); 查看这个Key是否在Map中存在
  containsValue(Object value); 查看这个Value是否在Map存在
 
  keySet(); 返回所有键(Key)Set集合

  values(); 返回所有值(Value)Collection集合

Map<String, String> map = new HashMap<String, String>();

2,Map中的entrySet使用

  /*
这里把键值对,认为是一个对象,组成一个类,称之为Entry
class Entry<K, V> {
K key;
V value;

这里可以认为在Map集合中,保存的每一个键值对都是一个Entry对象,把这些Entry对象获取出来,
做成一个集合,进行遍历
entrySet();
Map.Entry
*/
Set<Entry<String, Integer>> entrySet = map.entrySet();

Iterator<Entry<String, Integer>> it2 = entrySet.iterator();

while (it2.hasNext()) {
System.out.println(it2.next());

}

3,IO

IO:
  Input Output
  read  write
 
  只考虑文件操作情况下:
  读取操作是:input read 从硬盘(存储设备) 到 内存
  写入操作是:output write 从内存 到 硬盘(存储设备)

------------------------------------------------------------------------------------------

  如何创建一个File类对象:
  File(String pathName);
  根据文件路径创建File类对象,可以使【绝对路径】可以是【相对路径】

File file2 = new File("C:/aaa"); //用在Linux和Windows通用的分隔符


  File(String parent, String child);
  根据提供的父目录【文件夹】地址,和当前文件夹下的【子文件】或者【子文件夹】创建File类对象

File file4 = new File("C:\\aaa", "1.txt");


  File(File parent, String child);
  根据创建好的父目录的File类对象,和这个目录下的【子文件】或者【子文件夹】创建File类对象

File file5 = new File(file1, "1.txt");


--------------------------------------------------------------------------------------------------
可以利用File类对象,创建文件或者文件夹

boolean createNewFile();

File file1 = new File("C:/aaa/1.txt");
boolean ret = file1.createNewFile();
使用File类对象,创建File类对象里面保存的地址 指定 的 普通文件
返回值boolean: 创建成功返回true,创建失败返回false
返回false失败原因:
1. 该文件已经存在
2. 操作路径非法,例如:文件指定所在文件夹不存在
3. 操作的文件夹没有写入权限
4. 硬盘坏了
【要求】
创建文件,必须带有文件后缀名!!!
.java .class .doc .txt .xml .html .css .js .md .jsp 
.m .h .c .cpp .php .net .ppt .xls .exe .zip .rar .mp4
--------------------------------------------------------------------------------------------
boolean mkdir(); make direcotry 创建文件夹

File file2 = new File("C:/aaa/bbb");
ret = file2.mkdir();

使用File类对象里面保存的文件夹地址,创建对应的文件夹
返回值:boolean 创建成功返回true 创建失败返回false
失败原因:
1. 已经存在该文件夹
2. 指定创建文件夹的父目录没有写入权限
3. 要创建文件夹的父目录不存在

-------------------------------------------------------------------------------------------------
boolean mkdirs();

File file4 = new File("C:/aaa/ccc/ddd/eee/fff/ggg/hhh/iii/jjj");
ret = file4.mkdirs();

使用File类对象里面保存的文件夹路径地址,创建指定文件夹,如果该路径中的【中间文件夹】不存在
把中间路径,同时创建
返回值:boolean 创建成功返回true 创建失败返回false
失败原因:
1. 已经存在该文件夹
2. 指定创建文件夹没有写入权限
C:/aaa/ccc/ddd/eee/fff/ggg/hhh/iii/jjj
----------------------------------------------------------------------------------------------------
boolean renameTo(File dest);
功能1:
重命名!!!文件 或者 文件夹

File dest1 = new File("C:/aaa/2.txt");
//把C:/aaa/1.txt 重命名!!!
ret = file1.renameTo(dest1);

功能2:
剪切,移动到另一个位置

//原地址要带有文件或者文件夹名,而且目标地址也有带有文件或者文件夹名
File txt3 = new File("C:/aaa/3.txt");//C:\Users\刘晓磊\Desktop
File dest2 = new File("C:\\Users\\刘晓磊\\Desktop\\3.txt");
ret = txt3.renameTo(dest2);

-------------------------------------------------------------------------------------------

delete()
  删除文件或者文件夹,但是如果操作文件夹的话,只能删除空文件夹
  成功返回true ,失败返回false
  该删除操作不是把文件或者文件夹,放入到回收站里,而是直接从磁盘上抹去数据
  该操作不可逆

System.out.println("删除成功了吗?" + file1.delete());

deleteOnExit()
  当JVM虚拟机运行终止之后,删除指定的文件或者文件夹,而不是调用立即删除

-----------------------------------------------------------------------------------------------

exists(); 判断指定的文件或者文件夹是否存在
isFile(); 判断指定的File是文件吗?
isDirectory(); 判断指定的File是文件夹吗?
isHidden(); 判断指定的File是隐藏文件吗?
isAbsolute();  判断创建File类对象使用的是绝对路径吗?

---------------------------------------------------------------------------------------------------

以下方法和文件是否【存在无关】!!!!!!
  getName(); 获取路径中的文件名或者文件夹名
  getPath(); 获取File类对象里面保存的路径
  getAbsolutePath(); 获取File对象里面保存路径对应的绝对路径
  getParent(); 获取当前文件或者文件夹的父目录,如果没有返回null
 
  lashModified(); 文件最后的修改时间
  UNIX时间戳
  计算机元年到修改时间的秒数:
  1970年01月01日 00:00:00
  2017年12月08日 15:24:50

long last = new File("C:/aaa/1.txt").lastModified();
Date date = new Date(last);
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(format.format(date));

 
  length(); 文件的大小(字节数),如果文件不存在,或者是一个文件夹,返回0L

-----------------------------------------------------------------------------------------------------------------

 static File[] listRoots(); 
  获取当前计算机中所有的盘符,针对Windows操作系统
  Linux/UNIX没有区分盘符的概念 只有一个根目录 / 
  File[] roots = File.listRoots();
for (File file : roots) {
System.out.println(file.getPath());
}

 String[] list();
  获取指定【文件夹】里面所有子文件和子文件,返回一个String类型的的数组
  File file = new File("C:\\Program Files\\Java\\jdk1.8.0_131");
String[] allFilePath = file.list();
for (String string : allFilePath) {
System.out.println(string);
}

 File[] listFiles();
  获取指定【文件夹】里面所有子文件和子文件,返回一个File类型的的数组

File[] allFileObject = file.listFiles();
for (File file2 : allFileObject) {
System.out.println(file2);
}

endsWith(".java")找出指定文件夹下的所有.java文件

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值