使用plus.io在uni-app中进行写入文件提示写入成功但是文件没变化

使用plus.io在uni-app中进行写入文件提示写入成功但是文件没变化

操作步骤:

  • onReady的时候就写入文件不成功

预期结果:

  • 写入文件成功

实际结果:

  • 写入文件不成功

bug描述:

plus.io.resolveLocalFileSystemURL(filePath, function(entry) {  
    // 可通过entry对象操作test.html文件   
    entry.file(function(file) {  
        var fileReader = new plus.io.FileReader();  
        alert("getFile:" + JSON.stringify(file));  
        fileReader.readAsText(file, 'utf-8');  
        fileReader.onloadend = function(evt) {  
            alert("11" + evt);  
            alert("evt.target" + evt.target);  
            alert(evt.target.result);  
        }  
        alert(file.size + '--' + file.name);  
    });  
    entry.createWriter(function(writer) {  
        writer.onwrite = function(e) {  
            console.log("Write data success!");  
            readfile(filePath)  
        };  
        writer.onError = function(e) {  
            console.log("WonError!", e);  
        }  
        writer.write(3)  
    }, function(e) {  
        console.log(e);  
    });  
}, function(e) {  
    alert("Resolve file URL failed: " + e.message);  
});  

打印写入成功,但是再读取文件没有变化

const File = plus.android.importClass('java.io.File')  
const fos = plus.android.newObject("java.io.FileWriter", fileNamePath);  
console.log('fos', fos)  
fos.write('3')  
fos.close()  

const file = new File(fileNamePath)  
console.log('file', file)  
const out = plus.android.newObject("java.io.FileOutputStream", file);  
console.log('out', out)  
out.write([0, 0, 1, 1]);  
out.close();  

使用引入安卓类的方式写入也还是不行


| 信息类别       | 信息内容                       |
|----------------|-------------------------------|
| 产品分类       | uniapp/App                    |
| PC开发环境     | Windows                       |
| PC开发环境版本 | Windows 11 家庭中文版 24H2   |
| HBuilderX类型  | 正式                          |
| HBuilderX版本  | 4.75                          |
| 手机系统       | Android                       |
| 手机系统版本   | Android 12                    |
| 手机机型       | 手持终端                      |
| 页面类型       | vue                           |
| vue版本        | vue3                          |
| 打包方式       | 云端                          |
| 项目创建方式   | HBuilderX                     |

更多关于使用plus.io在uni-app中进行写入文件提示写入成功但是文件没变化的实战教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于使用plus.io在uni-app中进行写入文件提示写入成功但是文件没变化的实战教程也可以访问 https://www.itying.com/category-93-b0.html


从代码来看,你遇到了文件写入的常见问题。主要原因是写入操作存在异步时序问题,以及写入内容格式不正确。

在你的第一段代码中:

  1. writer.write(3) 写入的是数字3,而不是字符串"3"
  2. 读取和写入操作同时进行,可能导致文件锁冲突
  3. 缺少错误回调的完整处理

建议修改为:

plus.io.resolveLocalFileSystemURL(filePath, function(entry) {
    entry.createWriter(function(writer) {
        writer.onwrite = function(e) {
            console.log("Write data success!");
            // 写入完成后再读取
            readfile(filePath);
        };
        writer.onerror = function(e) {
            console.log("Write error:", e);
        };
        // 写入字符串内容
        writer.write("3");
    }, function(e) {
        console.log("Create writer failed:", e);
    });
}, function(e) {
    console.log("Resolve file URL failed:", e.message);
});

对于第二段Android原生方式,确保文件路径正确且有写入权限。使用FileWriter时:

const fos = plus.android.newObject("java.io.FileWriter", fileNamePath);
fos.write("3"); // 写入字符串
fos.close();
回到顶部