js 读写本地文件整理

本文介绍了一种使用JavaScript通过ActiveX对象进行文件读写的简单方法。包括如何利用FileSystemObject对象打开文件、设置读写模式、指定文件编码格式,并提供了具体的读写文件函数实现。适用于需要在客户端进行文件操作的应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简单明了比《Javascript之文件操作 (IE)》实用!


<script>
/*
object.OpenTextFile(filename[, iomode[, create[, format]]])
参数
object
必选项。object 应为 FileSystemObject 的名称。
filename
必选项。指明要打开文件的字符串表达式。
iomode
可选项。可以是三个常数之一:ForReading 、 ForWriting 或 ForAppending 。
create
可选项。Boolean 值,指明当指定的 filename 不存在时是否创建新文件。如果创建新文件则值为 True ,如果不创建则为 False 。如果忽略,则不创建新文件。
format
可选项。使用三态值中的一个来指明打开文件的格式。如果忽略,那么文件将以 ASCII 格式打开。
设置
iomode 参数可以是下列设置中的任一种:
常数 值 描述
ForReading 1 以只读方式打开文件。不能写这个文件。
ForWriting 2 以写方式打开文件
ForAppending 8 打开文件并从文件末尾开始写。

format 参数可以是下列设置中的任一种:
值 描述
TristateTrue 以 Unicode 格式打开文件。
TristateFalse 以 ASCII 格式打开文件。
TristateUseDefault 使用系统默认值打开文件。
*/

//读文件
function readFile(filename){
var fso = new ActiveXObject("Scripting.FileSystemObject");
var f = fso.OpenTextFile(filename,1);
var s = "";
while (!f.AtEndOfStream)
s += f.ReadLine()+"\n";
f.Close();
return s;
}

//写文件
function writeFile(filename,filecontent){
var fso, f, s ;
fso = new ActiveXObject("Scripting.FileSystemObject");
f = fso.OpenTextFile(filename,8,true);
f.WriteLine(filecontent);
f.Close();
alert('ok');
}

</script>
<html>
<input type="text" id="in" name="in" />
<input type="button" value="Write!" onclick="writeFile('c:/12.txt',document.getElementById('in').value);"/><br><br>
<input type="button" value="Read!" onclick="document.getElementById('show').value=readFile('c:/12.txt');"/><br>
<textarea id="show" name="show" cols="50" rows="8" >
</textarea>
</html>
<think>好的,我现在需要帮助用户找到关于UniApp在安卓平台上读写本地文件的实现方法或示例代码。根据用户提供的引用内容,我需要综合这些信息,并给出合适的回答。 首先,用户提到了引用[1]中的代码示例,展示了如何读取本地JSON文件。这段代码使用了`plus.io.resolveLocalFileSystemURL`方法,看起来是HTML5+的原生API。我需要确认UniApp中是否推荐使用这种方法,或者是否有其他更优的方式。 接下来,引用[2]提到Android 10以上的分区存储机制,限制应用访问其他应用创建的文件。这意味着在读写文件时需要注意存储位置和权限。可能需要指导用户如何正确处理外部存储的访问权限,特别是对于不同版本Android的适配。 然后,引用[3]涉及隐私政策弹窗的配置,这可能与权限请求相关。在安卓平台上,应用需要动态请求存储权限,这可能需要在代码中处理权限申请,同时确保隐私政策提示符合规范。 现在,我需要整理这些信息,形成步骤清晰的实现方法。首先应该说明权限配置,包括manifest设置和动态权限申请。然后,根据Android版本的不同,处理文件存储路径。对于读取操作,可以使用引用[1]中的示例,但需要解释代码结构和注意事项。对于写入操作,可能需要类似的方法,使用FileWriter等API。同时,需要提醒用户关于Android 10以上的限制,比如使用MediaStore或私有目录。 还需要考虑用户可能的疑问,比如如何处理不同文件类型,或者为何某些方法在较高版本Android上不可用。可能需要补充示例代码,如写入文件的示例,并强调测试的重要性,特别是在真机上的兼容性。 最后,生成相关问题,帮助用户深入理解可能遇到的挑战,比如权限处理、不同版本适配、文件类型限制等。确保回答引用正确的来源,如引用[1][2][3]中的内容,以增加可信度。 总结步骤: 1. 权限配置(静态和动态) 2. 处理Android版本差异 3. 读取文件的示例代码及解释 4. 写入文件的示例代码及解释 5. 注意事项和兼容性提醒 6. 相关问题生成 需要检查所有步骤是否符合用户需求,并确保代码示例正确有效,同时引用相关段落支持观点。</think>以下为UniApp在安卓平台读写本地文件的实现方法及注意事项: ### 一、权限配置(必需) 1. 静态权限声明 ```xml <!-- manifest.json --> "android": { "permissions": [ "<uses-permission android:name=\"android.permission.READ_EXTERNAL_STORAGE\"/>", "<uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\"/>" ] } ``` 2. 动态权限申请(Android 6.0+) ```javascript // 页面中调用 uni.request({ url: 'android.permission.WRITE_EXTERNAL_STORAGE', success: (res) => { /* 处理授权结果 */ } }) ``` ### 二、文件读取实现(以静态文件为例) ```javascript readLocalFile() { const _this = this // 注意路径需符合安全目录规范[^2] plus.io.resolveLocalFileSystemURL('/static/data.json', function(entry) { entry.file(function(file) { const reader = new plus.io.FileReader() reader.readAsText(file, 'utf-8') reader.onloadend = function(evt) { _this.fileContent = JSON.parse(evt.target.result) } }) }, function(e) { console.error("读取失败:" + e.message) } ) } ``` *此方法适用于应用私有目录文件读取[^1]* ### 三、文件写入实现 ```javascript writeFile(content) { plus.io.requestFileSystem(plus.io.PRIVATE_WWW, function(fs) { fs.root.getFile('test.txt', {create: true}, function(fileEntry) { fileEntry.createWriter(function(writer) { writer.write(content) writer.onwrite = function(evt) { uni.showToast({title: '写入成功'}) } }) }) }) } ``` ### 四、特殊注意事项 1. **Android 10+适配** 必须使用`MediaStore`访问公共目录媒体文件,文档类文件需使用Storage Access Framework[^2] 2. **私有目录推荐路径** ```javascript // 应用私有存储目录(无需权限) const dir = plus.io.PRIVATE_WWW // 对应路径:/data/data/包名/apps/ ``` 3. **兼容性处理建议** ```javascript // 判断Android版本 const system = uni.getSystemInfoSync() if (parseInt(system.platformVersion) >= 10) { // 使用新版API访问文件 } ``` ### 五、完整示例流程 1. 配置隐私政策弹窗模板[^3] 2. 检查并申请存储权限 3. 使用`plus.io` API进行文件操作 4. 处理异常情况(权限拒绝/文件不存在) 建议开发时使用真机调试,部分API在模拟器可能无法正常工作。 相关问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值