今日开启 aardio 文件读写与管理模块的学习,犹如探索计算机文件系统的 “数字档案库”。面对陌生的代码语法虽倍感困惑,但通过对实例的逐步拆解与实践,逐渐掌握了基础操作逻辑,对编程世界的认知也更进了一步。
一、创建并写入文件:给“电子文件夹”塞资料 刚接触时,完全不理解代码怎么就能创建文件、写入内容。后来琢磨明白了,这就跟在文件柜里拿出新文件夹,再往里面放资料一个道理。
案例一:写一行文字到test.txt import console; var file = io.file("/test.txt","w+"); file.write('hello aardio !'); var line = file.readAll(); console.log(line) file.close(); console.pause();
截图一 io.file
就像是打开文件的“万能钥匙”,"/test.txt"
是文件的“地址”,"w+"
表示写入模式,要是文件不存在,它就会自动新建一个。write
函数负责把内容“写”进文件,readAll
读取内容,print
把读到的内容显示出来,最后close
就像给文件夹关上了门。
不过第一次运行时,我发现文件根本找不到,原来是没注意路径。后来才知道,直接写test.txt
,文件会建在默认路径里,加个/
或~/
(~
代表用户目录)会更保险。
案例二:写入多行内容 import console; var file = io.file("/test.txt","w+"); file.write('第一行内容','\n'); file.write('第二行内容','\n'); file.write('第三行内容'); var line = file.readAll(); console.log(line) file.close(); console.pause();
截图二 和示例1比起来,就是多写了几行。这里最关键的是\n
,它就像键盘上的回车键,要是不加,所有内容都会挤在一行,根本分不清段落。
二、读取文件:翻“电子文件夹”里的资料 学会写文件后,我就琢磨着怎么看文件里的内容,这就好比从文件柜里拿出文件夹查看资料。
案例一:一次性读完文件 import console; var file = io.file("/test.txt","r"); var line = file.readAll(); console.log(line); file.close(); console.pause();
截图三 "r"
是只读模式,只能用来读已经存在的文件,要是文件不存在,程序就会报错。readAll()
特别方便,能把文件内容一股脑全读出来,适合内容少的文件。但要是文件很大,这么读可能会占用太多内存,这时候就得用逐行读取了。案例二:逐行读取文件 import console; var file = io.file("/test.txt","r"); while(true){ var line = file.read(); if(!line) break; console.log(line) } file.close(); console.pause();
截图四 一开始看到while(true)
这个无限循环,我都懵了,这不会一直读下去吗?后来才明白,file.read()
每次读一行,读完一行接着读下一行,当读到文件末尾,line
就会变成nil
(空值),这时候if(!line) break;
就会让循环停下来。就像一页一页翻书,直到把书翻完。
三、文件管理:整理“电子文件夹” 除了读写,还得学会管理文件,比如重命名、删除,这就跟整理文件柜里的文件夹一样。
案例一:重命名文件 import fsys; import console; var modify = fsys.rename("test.txt","new_test.txt"); if(modify){ console.log("修改文件名成功") }else { console.log("修改失败") } console.pause();
截图五 fsys.rename
就像给文件夹换标签。不过要注意,得先用import fsys;
引入文件系统模块,才能使用这个函数。如果文件不在当前目录,还得写清楚路径,不然会找不到文件。
案例二:删除文件 import fsys; import console; var delete = fsys.delete("new_test.txt"); if(delete){ console.log("删除成功") }else { console.log("删除失败") } console.pause();
截图六 删除文件的时候可把我紧张坏了,毕竟删了就找不回来了。fsys.delete
就像把文件夹扔进垃圾桶,测试的时候一定要用专门的测试文件,千万别删错重要文件!
四、综合习题:从写入到计算的实战 题目是创建data.txt
,写入5行数字,再读取每行数字加1后输出。乍一看觉得好难,但一步步拆分就没那么可怕了。
import console; var file = io.file("/data.txt","w+b"); for(i = 1; 5; 1){ file.write(i,'\n'); } file.close(); file = io.file("/data.txt","r"); while(true){ var line = file.read(); if(!line) break; var num = tonumber(line); console.log(num+1) } file.close(); console.pause();
截图七 写入部分和之前学的差不多,用循环把1到5这5个数字依次写进文件。读取部分,因为文件里的数字其实是文本形式,不能直接做加法,所以要用tonumber
把文本转成数字,这样才能进行计算。