os.remove不能用来删除文件夹,否则拒绝访问。
# -*- coding:utf-8 -*-import osif __name__ == “__main__”: os.remove(‘D:\\test’)
运行结果:
删除空目录:
# -*- coding:utf-8 -*-import osif __name__ == “__main__”: os.rmdir(‘D:\\test’)
如果目录不为空会报错,如下:
删除目录(不论目录是否为空):
# -*- coding:utf-8 -*-import shutilif __name__ == “__main__”: shutil
报错 如下 :07-19 10:00:08.398 14724-14724/com.lvche.lvchedingdang E/PushFactory: getPushInstance not found push instance.
07-19 10:00:08.436 14724
本文实例讲述了jQuery
中removeData()
方法用法。分享给大家供大家参考。具体实现
方法如下:
此
方法可以移除匹配元素上指定的数据。
removeData()
方法与data()
方法的作用相反。
语法结构一:
代码如下:$(selector).
removeData(name)
参数列表:
最近看了些 View 相关的源码,相比之前,有一些新的认知。争取通过一次整理,能系统了解 Android View 加载和显示的相关过程,记录下来,共勉。接下来的所有源码基于 Android API 27 Platform。
对于 View 创建,通俗说其实就两种方式,一种是直接通过 new 关键词直接创建对象,另外就是通过 xml 填充一个 View。第一种方式写起来最简易,但是,也有一些代价,...
上几篇文章中我们分析了Dialog的加载绘制流程,也分析了Acvityi的加载绘制流程,说白了Android系统中窗口的展示都是通过Window对象控制,通过ViewRootImpl对象执行绘制操作来完成的,那么窗口的取消绘制流程是怎么样的呢?这篇文章就以Dialog为例说明Window窗口是如何取消绘制的。
有的同学可能会问前几篇文章介绍Activity的加载绘制流程的时候为何没有讲Activ
public V
remove(Object key) {
Node<K,V> e;
return (e =
removeNode(hash(key), key, null, false, true)) == null ?
null : e.value;
在这段代码
中,首先会根据传入的key计算出它的hash值,然后调用
removeNode()
方法来删除对应的节点。如果删除成功,就返回被删除节点的value值,否则返回null。
removeNode()
方法的
源码如下:
final Node<K,V>
removeNode(int hash, Object key, Object value, boolean
matchValue, boolean movable) {
Node<K,V>[] tab;
Node<K,V> p;
int n, index;
if ((tab = table) != null && (n = tab.length) > 0 &&
(p = tab[index = (n - 1) & hash]) != null) {
Node<K,V> node = null, e;
if (p.hash == hash &&
((k = p.key) == key || (key != null && key.equals(k))))
node = p;
else if ((e = p.next) != null) {
if (p instanceof TreeNode)
node = ((TreeNode<K,V>)p).getTreeNode(hash, key);
else {
if (e.hash == hash &&
((k = e.key) == key ||
(key != null && key.equals(k)))) {
node = e;
break;
p = e;
} while ((e = e.next) != null);
if (node != null && (!
matchValue || (v = node.value) == value ||
(value != null && value.equals(v)))) {
if (node instanceof TreeNode)
((TreeNode<K,V>)node).
removeTreeNode(this, tab, movable);
else if (node == p)
tab[index] = node.next;
p.next = node.next;
++modCount;
--size;
afterNodeRemoval(node);
return node;
return null;
在这段代码
中,首先会根据hash值找到对应的节点p,然后遍历p的链表,找到对应的节点node。如果找到了node,并且它的value值与传入的value值相等,就删除这个节点,并返回它。如果没有找到对应的节点,就返回null。