uniapp 读写文件
时间: 2025-08-18 13:51:20 浏览: 2
在 UniApp 中实现文件的读写操作,主要依赖于平台提供的原生能力,尤其是在 Android 和 iOS 上使用 Native.js 的方式。由于 UniApp 的标准 API `uni.getFileSystemManager()` 在 App 端的支持有限,因此通常需要借助原生 Java 或 Objective-C 代码实现文件操作。以下是实现文件读写操作的常用方法:
### 一、使用 Native.js 实现 Android 文件读取
在 Android 平台上,可以通过 Native.js 调用 Java 原生类实现文件读取操作。以下是一个封装好的读取 JSON 文件的方法示例:
```javascript
readJsonByFile(fileNamePath) {
const File = plus.android.importClass('java.io.File');
const BufferedReader = plus.android.importClass('java.io.BufferedReader');
const FileReader = plus.android.importClass('java.io.FileReader');
const readFile = (fileName) => {
const readFr = new File(fileName);
try {
const reader = new BufferedReader(new FileReader(readFr));
let txt;
let retxt = '';
let flag = true;
while (flag) {
txt = reader.readLine();
if (txt == null) {
flag = false;
break;
}
retxt += txt;
}
return retxt;
} catch (e) {
console.log(e);
return '';
}
};
const json = readFile(fileNamePath);
return eval('(' + json + ')');
}
```
该方法适用于读取本地存储中的 `.txt` 和 `.json` 文件,路径建议使用 `/storage/emulated/0/Download/` 或 `/sdcard/` 下的目录[^1]。
### 二、使用 uni.writeStorageSync 写入小型文本文件
对于简单的文本写入操作,可以使用 UniApp 提供的本地存储 API,例如 `uni.setStorageSync` 来保存键值对数据。这种方式适用于小型数据存储,但不适合处理大文件或复杂格式。
```javascript
uni.setStorageSync('key', 'value');
```
### 三、使用 5+ App 的 Native.js 实现文件写入
在 Android 平台上,可以使用 Native.js 调用 `java.io.FileWriter` 来实现文件写入操作。以下是一个写入文本文件的示例:
```javascript
writeToFile(filePath, content) {
const File = plus.android.importClass('java.io.File');
const FileWriter = plus.android.importClass('java.io.FileWriter');
try {
const file = new File(filePath);
const writer = new FileWriter(file);
writer.write(content);
writer.close();
} catch (e) {
console.log('写入失败:', e);
}
}
```
该方法适用于将字符串内容写入指定路径的文件中,路径需具有写入权限[^1]。
### 四、iOS 平台上的文件读写
在 iOS 平台上,可以使用 Objective-C 的 `NSString` 和 `NSFileManager` 类实现文件的读写操作。例如:
```javascript
writeToFileiOS(filePath, content) {
const NSString = plus.ios.importClass('NSString');
const NSData = plus.ios.importClass('NSData');
const NSFileManager = plus.ios.importClass('NSFileManager');
const defaultManager = NSFileManager.defaultManager();
const data = NSString.stringWithUTF8String(content).dataUsingEncoding(4); // 4 表示 NSUTF8StringEncoding
data.writeToFileAtomically(filePath, true);
}
```
读取文件则可以使用:
```javascript
readFromFileiOS(filePath) {
const NSString = plus.ios.importClass('NSString');
const content = NSString.stringWithContentsOfFileEncodingError(filePath, 4, null);
return content;
}
```
以上代码适用于 iOS 平台的文件读写操作[^1]。
### 五、使用 Apache POI 处理 Office 文件
如果需要读写 `.xls`、`.xlsx`、`.docx` 等 Office 文件,可以借助 Apache POI 库实现。Apache POI 是一个基于 Java 的 API,支持对 Microsoft Office 格式文件进行读写操作。虽然在 UniApp 中直接使用 POI 较为复杂,但可以通过与原生模块集成的方式在 Android 上实现对 Office 文件的处理[^3]。
---
阅读全文
相关推荐



















