如何做到读一行文本,删除一行文本

如何做到读一行文本,删除一行文本。。

一下是读文本
var file = open("/sdcard/1.txt", "r");
for each(line in file.readlines()) {
arr.push(line)
}
file.close()

管理员
path=files.cwd()+"/text3.txt";
写入文件(path,4,"ccc");
写入文件(path,0,"aa");
log("读取-->"+读取文件(path,0));

function 写入文件(filePath,line,str){
    files.createWithDirs(filePath);
    var 旧内容=files.read(filePath)+"";
    var 分组=旧内容.split("\n");
    分组[line]=str;
    files.write(filePath,分组.join("\n"));
    return true;
}

function 读取文件(filePath,line){
    if(!files.isFile(filePath)){
        return "";
    }
    var 旧内容=files.read(filePath)+"";
    var 分组=旧内容.split("\n");
    if(line<分组.length){
        return 分组[line];
    }
    return "";
}

怒我直言,这并不是一种好的操作方式
一般不直接操作文件,或者做删除。
1、文件操作效率跟内存比起来太低
2、一般不做删除,删除原数组来说,会导致顺序变更。遍历会出错
3、可以的话,可以试试使用json

管理员

上面是对文件一行一行的读,以及一行一行的写。

删除的话,本质是将删除后的数据覆盖到原数据

操作的话,可以一次性读取全部数据到内存,然后复制一个数组。
原数组做遍历。新数组做删除操作,再覆盖写入。

var fileContents = files.read("./1.txt");
var contentList=fileContents.split("\n");
var copyList=contentList.slice(0);
fileContents.split("\n").forEach(line=>{
        log(line);
        //对复制的副本做删除操作
        copyList.shift();
        //TODO

        //将新的数据写入
        files.write("./1.txt",copyList.join("\n"));
    }
)

以上就完成了 "删除" 操作

最后由 笔青居 编辑
  • 5
    帖子
  • 540
    浏览

与 Auto.js 的连接断开,我们正在尝试重连,请耐心等待