文件

# 说明 文件模块函数主要是跟文件信息相关联 文件模块的对象前缀是file,例如 file.readFile()这样调用 ## file.exists(path) 文件或者文件夹是否存在 @param path 路径 @return 布尔型 true 代表成功,false代表失败 ```js function main(){ var t=file.exists("/sdcard/testdir/"); toast(t); } main(); ``` ## file.create(path) 创建一个文件或者文件夹 @param path 文件或者文件夹路径 @return 布尔型 true 代表创建成功 ```js function main(){ var create=file.create("/sdcard/test.txt"); toast(create); } main(); ``` ## file.mkdirs(path) 创建一个文件夹并返回是否创建成功。 如果文件所在文件夹不存在,则先创建他所在的一系列文件夹。如果文件已经存在,则直接返回true。 @param path 路径 @return 布尔型 true 代表成功,false代表失败 ```js function main(){ var t=file.mkdirs("/sdcard/testdir/"); toast(t); } main(); ``` ## file.deleteAllFile(path) 删除文件或者文件夹 @param path 文件或者文件夹路径 ```js function main(){ file.deleteAllFile("data/test.txt"); } main(); ``` ## file.readFile(path) 将文件读取为字符串 @param path 文件路径 @return 字符串 ```js function main(){ var data = file.readFile("/sdcard/test.txt"); toast(data); } main(); ``` ## file.listDir(path) 列出目录下的所有文件 @param path 路径 @return 路径字符串数组 ```js function main(){ var data = file.listDir("/sdcard/"); for(var i = 0; i < data.length; i++) { logd("path "+data[i]); } } main(); ``` ## file.writeFile(data,path) 将字符串存储到文件中 @param data 字符串 数据 @param path 文件路径 ```js function main(){ var data="Test"; file.writeFile(data,"/sdcard/test.txt"); } main(); ``` ## file.readAssets(path) 从APK的assets文件夹中读取数据为字符串 @param path assets文件夹中的文件路径,例如 data/a.txt @return 字符串 ```js function main(){ var data=file.readAssets("data/test.txt"); toast(data); } main(); ``` ## file.appendLine(lineData,path) 写入一行到文件中,追加模式 @param lineData 行数据 @param path 文件或者文件路径 @return 布尔型 true代表成功 false代表失败 ```js function main(){ var lineData="飞云编程学院"; var t=file.appendLine(lineData,"/sdcard/test.txt"); toast(t); } main(); ``` ## file.readLine(path,lineNumber) 读取一行数据,如果行号不对,返回的是空 @param path 路径 @param lineNumber 行号 @return 字符串 返回一行字符串 ```js function main(){ var t=file.readLine("/sdcard/test.txt",1); toast(t); } main(); ``` ## file.deleteLine(path,line,contains) 删除文件某一行或者根据包含条件删除 运行环境: 无限制 兼容版本: Android 4.4 以上 @param path 文件路径 @param line 行数,如果是-1 代表这个条件不生效 @param contains 包含某个字符串就删除,如果为null代表这个条件不生效 @return {bool} true 成功 false 失败 ```js function main(){ //删除包含 时间 字符串的行 let r = file.deleteLine("/sdcard/a.txt",-1,"时间"); logd("r "+r); //删除第3行 r = file.deleteLine("/sdcard/a.txt",3,null); logd("r "+r); } main(); ``` ## file.readAllLines(path) 读取所有数据 @param path 路径 @return 字符串 ```js function main(){ var t=file.readAllLines("/sdcard/test.txt"); toast(t); } main(); ``` ## file.copy(src,dest) 复制文件 @param src 源文件路径 @param dest 目标文件路径 @return 布尔型 true 代表成功 ```js function main(){ var t=file.copy("/sdcard/a.png","/sdcard/b.png"); toast(t); } main(); ``` ## 例子 #### 追加文本内容到指定文件 ```js let path = "/sdcard/test.txt" // logd(file.deleteAllFile(path)) if (!file.exists(path)) { logd(file.create(path)); } let utf8Content = '你好,飞云 \r\n' fileAppend(path, encodeURI(utf8Content)) //读取文件内容 logd(decodeURI(file.readFile(path))); /** * @description: 追加文本内容到指定文件,使用decodeURI()方式读取 * @param: path * @param: utf8Content {string} 使用encodeURI()转换后的字符串,不转换的话中文会变乱码 * @return: * @author feiyun * @date: 2021/1/5 10:55 下午 */ function fileAppend(path, utf8Content) { // java 文件操作追加内容 // https://blog.csdn.net/qq_27309053/article/details/91267980 importClass(java.io.FileWriter); importClass(java.io.IOException); importClass(java.io.RandomAccessFile); if (file.exists(path)) { try { // 打开一个随机访问文件流,按读写方式 let randomFile = new RandomAccessFile(path, "rw"); // 文件长度,字节数 let fileLength = randomFile.length(); // 将写文件指针移到文件尾。 randomFile.seek(fileLength); // JAVA中的char是16位的,一个char存储一个中文字符,直接用writeBytes方法转换会变为8位,直接导致高8位丢失。从而导致中文乱码。 randomFile.writeBytes(utf8Content); randomFile.close(); } catch (e) { loge(e); } } } ```