文件
# 说明
文件模块函数主要是跟文件信息相关联
文件模块的对象前缀是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);
}
}
}
```