笔记

万物寻其根,通其堵,便能解其困。
  博客园  :: 新随笔  :: 管理

读写文件

Posted on 2024-12-20 19:18  草妖  阅读(11)  评论(0)    收藏  举报

笔记来源:uniapp获 取Android目录 uniapp读取本地文件_mob64ca14144dde的技术博客_51CTO博客,详情请跳转查看。

// 初始化加班文件/读取文件
            initReadOverTimeFile:function(){
                /** 相关参考文档:https://blog.51cto.com/u_16213700/8759214
                文档(https://uniapp.dcloud.net.cn/api/file/file.html#savefile)查:uni.getFileInfo
                https://www.html5plus.org/doc/zh_cn/io.html#plus.io.PRIVATE_DOC
                */
                try{
                    var pathUrl='/storage/emulated/0/overtime.text';  // 安卓10以下路径地址
                    pathUrl=plus.io.convertLocalFileSystemURL("_downloads/")+'overtime.text';  // 兼容安卓10+(通用)
                    console.log("打印地址:"+pathUrl);
                    plus.io.requestFileSystem(plus.io.PRIVATE_DOC, function(fs) {
                        //请求地址文件 '/storage/emulated/0/config.txt'为根目录 '/config.txt'为/storage/Android/data/io.dcloud.HBuilder(包名)/documents/config.js
                        fs.root.getFile(pathUrl,{
                            create: true ,  // 当文件不存在时创建 
                        },fileEntry => { 
                            fileEntry.file(function(file) { 
                                let fileReader = new plus.io.FileReader();  // new一个可以用来读取文件的对象fileReader 
                                fileReader.readAsText(file, "utf-8"); //读文件的格式 
                                fileReader.onerror= e=>{
                                    //读文件失败 
                                    console.log("获取文件失败", fileReader.error); 
                                    plus.nativeUI.toast("获取文件失败,请重启应用", { background: "rgba(0, 0, 0, 1)", }); 
                                    return; 
                                }; 
                                fileReader.onload = e=>{ 
                                    //读文件成功 console.log("读取文件成功"); 
                                    let txtData = e.target.result; // console.log(txtData); 
                                    console.log("读取文件成功:"+txtData);
                                };
                            });
                        },error => { 
                            console.log("2新建获取文件失败", error);
                            plus.nativeUI.toast("获取文件失败,请重启应用", { background: "rgba(0, 0, 0, 1)", }); 
                            return; 
                        });
                    }, function (e) {
                        console.log( "Request file system failed: " + e.message);
                    });
                }catch(err){
                    console.log(err);
                }
            },
            // 写文件操作
            writeOverTimeFile:function(writeMsg){
                try{
                    var pathUrl='/storage/emulated/0/overtime.text';  // 安卓10以下路径地址
                    pathUrl=plus.io.convertLocalFileSystemURL("_downloads/")+'overtime.text';  // 兼容安卓10+(通用)
                    console.log("打印地址:"+pathUrl);
                    plus.io.requestFileSystem(plus.io.PRIVATE_DOC, fs =>{
                        fs.root.getFile(pathUrl, { create: true }, fileEntry =>{
                            fileEntry.file(file => { 
                                fileEntry.createWriter(writer => { 
                                    console.log( fs.root.toURL(),'路径111');
                                    plus.nativeUI.showWaiting("正在保存信息");
                                    // writer.seek(seek);  可操作指定文职
                                    //覆盖文件
                                     writer.write(writeMsg);  // 整个文件重写
                                     writer.onerror = function() { 
                                         console.log("4写入文件失败", writer.error.message); 
                                         plus.nativeUI.closeWaiting(); 
                                         plus.nativeUI.toast("修改信息失败,请重新操作", { background: "rgba(255, 255, 255, 0.6)", }); 
                                         return; 
                                    }; 
                                    writer.onsuccess = function() { 
                                        //填写文件成功 
                                        plus.nativeUI.closeWaiting(); 
                                        plus.nativeUI.toast("保存成功", { background: "rgba(255, 255, 255, 0.6)", }); 
                                        resolve("1"); 
                                    }; 
                                },
                                error => { 
                                    console.log("3创建creactWriter失败", error);
                                     plus.nativeUI.toast("保存文件失败,请重新操作", { background: "#ffa38c", }); 
                                     return; 
                                });
                            });
                        }, 
                        error => { 
                            console.log("2获取文件失败", error);
                            plus.nativeUI.toast("保存文件失败,请重新操作", { background: "#ffa38c", }); 
                            return; 
                        }); 
                    }, 
                    e => { 
                        console.log("1请求文件系统失败", e.message); 
                        plus.nativeUI.toast("请求系统失败,请重新操作", { background: "#ffa38c", }); 
                        return; 
                    });
                }
                catch(err){
                    console.log(err);
                }
            },