walk相关知识
-
go语言path/filepath包之Walk源码解析go语言的path/filepath包提供了很多兼容各个操作系统的文件路径实用操作方法,今天只来看看Walk方法:Walk(root stirng, walkFn WalkFunc) error该方法主要用于递归遍历目录:walk方法会遍历root下的所有文件(包含root)并对每一个目录和文件都调用walkFunc方法。在访问文件和目录时发生的错误都会通过error参数传递给WalkFunc方法。文件是按照词法顺序进行遍历的,这个通常让输出更漂亮,但是也会导致处理非常大的目录时效率会降低。另外,Walk函数不会遍历符号链接。方法名定义WalkFunctype WalkFunc func(path string, info os.FileInfo, err error) errorWalkfunc Walk(root string, walkFn WalkFunc) errortype WalkFunc func(path string, info os.FileInfo, err error)  
-
Java基础内部类4-内部类进阶前言 除了前面介绍,内部类还有一些更高级的用法,下面就简单的介绍一下 接口内部类 内部类除了可以定义在类的内部,也可以定义在接口里面,用法与类类似 // Move.java public interface Move { void run(); void walk(); class Run { public void move() { System.out.println("run"); } } class Walk { public void move() { System.out.println("walk"); } } } // AnimalMoveImpl.java public class AnimalMoveImpl implements Move { @Override
-
递归算法递归算法 什么是递归 在运行过程中,自身调用自身。 一个条件:至少应该有一个结束条件。 例子: 你和你的朋友在一个地方约见面,他已经到了,你距离你们约定的地方还差100步。 那么最后这一百步,你肯定是需要一步一步走过去。 那么咱们如何用递归的方式来实现最后这100步呢 示例代码: function walk(step) { if (step == 0) { console.log('已经到达目的地') }else { step-- console.log(`已经走了一步,还剩${step}步`) walk(step) } } walk(100) 递归一般应用在
-
java、golang日志文件转储压缩实现正文 日志的转储和压缩是非常关键的,它不仅可以减少硬盘空间占用,主要还可以在发生故障时根据日志定位出故障原因。下面来看看golang和java的文件转储实现。 go语言: 用到了filepath包下的Walk方法,具体说明可以参看历史文章: go语言path/filepath包之Walk源码解析 package main import ( "fmt" "os" "io" "archive/zip" "path/filepath" "time" "log" ) func main() { logFile := "D:/tmp/successLog/logs/root.log" backFile := "D:/tmp/successLog/logs/root_"
walk相关课程
walk相关教程
- 5.2 静态方法 5.2.1 声明使用 static 关键字在接口中声明静态方法,例如:public interface Person { void walk(); // 声明静态方法 static void sayHello() { System.out.println("Hello imooc!"); }}5.2.2 调用类中的静态方法只能被子类继承而不能被重写,同样在实现类中,静态方法不能被重写。如果想要调用接口中的静态方法,只需使用 接口名。类方法名 的方式即可调用:public class Student implements Person { @Override public void walk() { // 调用接口中的类方法 Person.sayHello(); System.out.println("学生会走路"); }}
- 4.3 Object.create 使用 Object.create 也可以创建一个新对象,但是必须传递一个对象作为参数。var parent = { walk: function() { console.log('走路'); },};var son = Object.create(parent);console.log(parent === son);son.walk();Object.create 会根据传递过去的对象生成一个新的对象,作为参数传递的对象会作为新对象的原型。
- 3.1 定义接口 3.1.1 接口声明使用 interface 关键字声明一个接口:public interface Person { ...}接口声明需要两个元素:interface 关键字和接口名称,public 修饰符表示该接口可以在任何包的任何类中使用,如果为显示指定访问修饰符,则该接口只能被在同包中的类使用。3.1.2 接口主体接口主体中,可以定义常量和方法声明:public interface Person { final String NAME = "我是Person接口中的常量"; void walk(); void run();}上面的 Person 就是一个接口,这个接口定义了一个常量 NAME 和两个抽象方法 walk()、run()。接口比抽象类更加 “抽象”,它下面不能拥有具体实现的方法,必须全部都是抽象方法,所有的方法默认都是 public abstract 的,所以在接口主体中的方法,这两个修饰符无需显示指定。接口除了方法声明外,还可以包含常量声明。在接口中定义的所有的常量默认都是 public,static,和 final 的。接口中的成员声明不允许使用 private 和 protected 修饰符。
- 3.2 实现接口 接口定义了一些行为协议,而实现接口的类要遵循这些协议。implements 关键字用于实现接口,一个类可以实现一个或多个接口,当要实现多个接口时,implements 关键字后面是该类要实现的以逗号分割的接口名列表。其语法为:public class MyClass implements MyInterface1, MyInterface2 { ...}下面是实现了 Person 接口的 Student 类的示例代码:public class Student implements Person { @Override public void walk() { // 打印接口中的常量 System.out.println(Person.NAME); System.out.println("学生可以走路"); } @Override public void run() { System.out.println("学生可以跑步"); }}上述代码中,Student 类实现了 Person 接口。值得注意的是,可以使用接口名。常量名的方式调用接口中所声明的常量:String name = Person.NAME;
- 1.2 对象简洁表示法 在 ES6 之前,对象字面量的属性一定要书写上属性值和属性名。在 ES6 中,如果对象的属性名和存放属性值的变量相同,则只需要写一次。// 在 ES5 中function getInfo() { // 通过某种方式拿到的数据 var username = '张三'; var enemy = '罗老师'; var gender = '男'; var age = 12; return { username: username, enemy: enemy, gender: gender, age: age, };}// 在 ES6 中function getInfo() { // 通过某种方式拿到的数据 var username = '张三'; var enemy = '罗老师'; var gender = '男'; var age = 12; return { username, enemy, gender, age, };}可以看到 ES6 使得代码更清晰,也可以直接看出对象的属性名和存放属性值的变量是同名的。同样的,方法也提供了简写的方式:var obj = { say() { // ES6 console.log('说话'); }, walk: function() { // ES5 console.log('走路'); },},
- 2. os 模块操作文件与文件夹 os 模块是 Python 中操作文件与文件夹时常用的模块,os 模块中常用方法见下表。方法名描述 getcwd() 获取当前工作目录 listdir(path) 获取指定的文件夹包含的文件或文件夹的名字的列表 rename(src,dst) 用于文件或文件夹重命名 makedirs(path) 用于递归创建文件夹 removedirs(path) 用于递归删除文件夹 remove(path) 删除指定路径的文件 open(file, flags[, mode]) 打开文件 read(fd,n) 读取指定文件 wirte(fd,str) 写入内容 walk(dir) 文件、目录遍历器os.path 模块中常用方法见下表。方法名描述 os.path.exists(path) 如果路径 path 存在,返回 True;如果路径 path 不存在,返回 Falseos.path.join(path1[, path2[, …]]) 把目录和文件名合成一个路径下面来具体看下每个方法的使用:getcwd () 使用:import osprint(os.getcwd()) #输出:D:\code代码解释:当前代码文件存放在 D:\code 下,导入 OS 模块,使用 getcwd () 方法,获取当前工作目录,打印结果为 “D:\code”,如下图所示。listdir () 使用:import osprint(os.listdir('.'))#输出:['dingding.py', 'image', 'index.py', 'writeppt.py', 'writeword.py']代码解释:listdir () 方法可以获取指定的文件夹包含的文件或文件夹的名字的列表,目前 D:\code 目录下文件结构如下图所示。通过 listdir () 方法传递指定目录,代码中传递 “.” 表示当前目录,输出结果:[‘dingding.py’, ‘image’, ‘index.py’, ‘writeppt.py’, ‘writeword.py’],如下图所示。rename () 使用:import osos.rename("image","newimage")os.rename("dingding.py","newdingding.py")代码解释 :rename () 方法为重命名文件或文件夹,第一个参数为要重命名的文件名或文件夹名,第二个参数为修改后的名称,上述代码中将文件夹 “image” 重名为 “newimage”,将文件 “dingding.py” 重名为 “newdingding.py”,代码执行完成后,D:\code 目录下效果如下图所示。makedirs () 使用:import osos.makedirs("dist/src/code")代码解释:makedirs () 方法用于递归创建目录,参数即为需要递归创建的目录,上述代码指定 “dist/src/code”,即表示创建一个 dist 文件夹,其中包含 src 文件夹,在 src 下包含 code 文件夹。代码执行完成后,D:\code 目录下效果如下图所示。removedirs () 使用:import osos.removedirs("dist/src/code")print(os.listdir('.'))#输出:['newdingding.py', 'newimage', 'index.py', 'writeppt.py', 'writeword.py']代码解释 :removedirs () 方法用于递归删除目录,参数为要递归删除的目录,上述代码指定 “dist/src/code”,即将 dist 文件夹下 src 文件夹下 code 文件夹一并进行删除。执行完删除后,通过 listdir () 方法查看当前目录下文件结构,输出 [‘newdingding.py’, ‘newimage’, ‘index.py’, ‘writeppt.py’, ‘writeword.py’],可以看到已经完成删除操作。代码执行完成后,D:\code 目录下效果如下图所示。remove () 使用:import osos.remove("newdingding.py")print(os.listdir('.'))#输出:['newimage', 'index.py', 'writeppt.py', 'writeword.py']代码解释 :remove () 方法用于删除指定文件,上述代码中删除 “newdingding.py” 文件,删除完成后,通过 listdir () 方法查看当前目录文件结构,输出 [‘newimage’, ‘index.py’, ‘writeppt.py’, ‘writeword.py’],可以看到已经完成删除操作。代码执行完成后,D:\code 目录下效果如下图所示。open () 使用:import osos.open("writeppt.py",os.O_RDONLY)代码解释:open () 方法用于打开指定文件,第一个参数为要打开的文件,第二个参数为打开的模式,可以取值如下所示:OS.O_RDONLY:以只读的方式打开;OS.O_WRONLY:以只写的方式打开;OS.O_RDWR:以读写的方式打开;OS.O_NONBLOCK:打开时不阻塞;OS.O_APPEND:以追加的方式打开;OS.O_CREAT:创建并打开一个新文件;OS.O_TRUNC:打开一个文件并截断它的长度为零(必须有写权限);OS.O_EXCL:如果指定的文件存在,返回错误;OS.O_SHLOCK:自动获取共享锁;OS.O_EXLOCK:自动获取独立锁;OS.O_DIRECT:消除或减少缓存效果;OS.O_FSYNC:同步写入;OS.O_NOFOLLOW:不追踪软链接。上述代码中,打开 writeppt.py 文件,以只读方式打开,返回新打开文件的描述符,可以进行后续的读取、写入操作。read () 使用:import OSfs=os.open("writeppt.py",OS.O_RDONLY) # fs 就是 writeppt.py 的文件描述符print(OS.read(fs,24))代码解释 :read () 方法为从文件描述符中读取文件内容,第一个参数为 open () 方法打开文件返回的文件描述符,第二个参数为读取的字节数。上述代码中读取 writeppt.py 文件 24 个字节内容。代码执行完成后,输出效果如下图所示。write () 使用:import osfs=os.open("test.txt",os.O_RDWR) # fs 就是 test.txt 的文件描述符,打开模式设置为以读写的方式打开print(os.write(fs,"hello python")) #写入内容为hello python代码解释:write () 方法用于写入字符串到文件描述符 fs 中,第一个参数为文件描述符,第二个参数为写入的字符串内容。代码执行完成后,输出效果如下图所示。walk () 使用:import osfor dirpath, dirnames, filenames in os.walk("D:/code"): #输出:D:/code ['newimage'] ['index.py','test.txt','writeppt.py','writeword.py'] print(dirpath, dirnames, filenames)代码解释:os.walk () 方法是一个简单易用的文件、目录遍历器,接收参数为要遍历的目录的地址,返回的是一个三元组 (dirpath, dirnames, filenames),分别表示当前正在遍历的这个文件夹的本身的地址、该文件夹中所有的目录的名字、该文件夹中所有的文件。代码中指定目录 D:/code,执行时会遍历 D 盘 code 目录下所有文件和文件夹,输出效果如下图所示。os.path.exists () 使用:import osprint(os.path.exists("D:\\code\\index.py")) #输出trueprint(os.path.exists("D:\\code\\test.py")) #输出False代码解释 :exists () 方法判断路径是否存在,上面代码中在 D 盘 code 文件夹下存在 index.py,所以输出 true,不存在 test.py,输出 False。代码执行完成后,输出效果如下图所示。os.path.join () 使用:import os#输出D:\code\2020\11print(os.path.join("D:\\code\\","2020\\","11"))代码解释:join () 方法用于把目录和文件名合成一个路径。代码执行完成后,输出效果如下图所示。
walk相关搜索
-
w3cshool
w3c标准
w3c菜鸟
w3c验证
walk
wall
warn
web
web py
web service
web services
webbrowser
webgl
webmaster
webservices
webservice教程
webservice接口
webservice调用
websocket
webview