这是奔跑的键盘侠的第128篇文章
之前有提到计划写一个文本读写的专题,但提笔的时候发现独立一篇出来不太合适,但是不独立出来篇幅又有点过长。最后写完才发现:原来隐含的知识点挺多的,自己都有点惊到了。而独立使用的场景想一时没想到,暂且作为一个命令讲解的专题吧。
在实战过程中,文本读写往往都是与其他功能模块结合使用,比如前一篇讲的日志,还有后面会讲的数组,应用极其广泛。
文本读写相关的内容在之前的帖子中有穿插讲到过一些,比如《按键精灵二三事系列第八篇——读取指定行文本内容》介绍读取txt文本内容的,再比如上篇的《按键精灵——脚本日志》就涉及了文本如何写入本地等等。
今天呢,要进行一次系统的讲解。
1
txt文本写入操作
按键精灵对文件的读写有一个专门设置了一个File 文件插件,先来简单看一眼:
命令还是十分烟花缭乱的,这里就挑一个WriteLine写文本内容来介绍吧,软件自带的注释,是让我们参考SeekFile,点到SeekFile的注释(有删减):
fileLen=Plugin.File.GetFileLength("c:Config.txt")
handle=Plugin.File.OpenFile("c:Config.txt")
Call Plugin.File.SeekFile(handle,fileLen)
Call Plugin.File.WriteFile(handle,"123456")
Call Plugin.File.WriteLine(handle,"abcdef")
Call Plugin.File.CloseFile(handle)
新手看起来会有点吃力,我稍微解释一下:
这6条命令都是调用按键自身的插件命令,大家知道是什么意思、怎么使用即可。看到 Plugin.开头的其实一点都不用慌,都是些现成的功能,可以直接搬用。
第一句,GetFileLength就是获取文本长度,往深一点讲,涉及到了指针,也就是往txt里写新内容,要把插入点放到末尾。比如日志文件写了100行(长度2000),下一次再写新的内容,需要把插入点放到2000后面,从2001的位置继续写;如果不设置插入点(也就是指针),默认会从开头(长度0)开始写,这样的话原有的内容就会被一个一个的覆盖。
第二句,是打开文件,然后获取此文件的句柄。句柄是windows一个非常重要的概念,有点比较难懂,就不深入了,大家只需要记住:它是程序的一个标识,有了标识,后面直接根据标识就可以对此文件进行操作。
第三句,就是指针移动到文件长度的位置。
第四句、第五句,WriteFile接着写入内容“123456”,不换行哦;而WriteLine是换一行,再写“abcdef”。
第六句,关闭这个文件,写文本完成。这句不可省略,如果省略了,那这个文件一直处在后台打开的状态中。如果重复操作n次的话,这个文件就会后台存在n个状态,会发生什么诡异的事情就不清楚了
2
txt文本读取操作
至于读取的命令,其实大同小异。贴一个ReadLine的命令简单讲一下:
fileHandle=Plugin.File.OpenFile("c:Config.txt")
file20byte=Plugin.File.ReadFile(fileHandle,20)
fileline=Plugin.File.ReadLine(fileHandle)
Call Plugin.File.CloseFile(fileHandle)
第一句,获取文件句柄;
第二句,读取20个字节长度的内容(从头开始);
第三句读取一行内容;
第四句,关闭文件。
跟写入基本没差,唯一需要补充的是:这里面没有SeekFile的命令,但是依旧有暗藏指针的操作,体现在第二行先读20个字节,紧接着第三行的再读取一行内容,第三行这个读取行内容的代码,其实是从第21个字节起算的(第二行的读取内容,指针会随着读取命令同时移动的)。
如果上面的代码,省略了第二行,那第三行就纯粹的只是读取首行内容了。
感兴趣的小伙伴,可以动手试一下了
最后的最后,文件File插件模块,命令很多,但是只有读写命令的注释示例内容比较多。而创建文件、删除文件、移动文件、重命名、判断文件是否存在的命令,都是一行就可以实现的语法,注释看一眼,基本就能上手。过于直白的语法,这里就不赘述了,大家如果有什么疑问,欢迎留言提问