当前位置: 首页 > article >正文

uniapp+vue开发app,蓝牙连接,蓝牙接收文件保存到手机特定文件夹,从手机特定目录(可自定义),读取文件内容,这篇首先说如何读取,手机目录如何寻找

首先说一下研究思路,时间紧急不看的直接拿取粉色代码部分即可

1.首先要解决第一个问题就是手机目录是什么,文件路径如何写,参考了一篇文章中的这一句话

标蓝

---------------------------------------------------------
    //Android平台本地绝对路径为"storage/emulated/0",就是用户文件管理器能看到的了;
    filename: 'file://storage/emulated/0/xxx/'

--------------------------------------------------------------

所以尝试了以下方法

        // plus.io.resolveLocalFileSystemURL(url,function(entry){
            //     console.log("entry",entry)
            //     entry.file(function(file){
            //         var reader=new plus.io.FileReader()
            //         reader.onloadend=function(e){
            //             console.log('filecontent',e.target.result)
            //         }
            //         reader.readAsText(file,'utf-8')
            //     })
            // })
 发现,不行,后得知, 这种方式手机版本10+就不行了

现在是需要将路径的file://去掉,根目录就是/storage/,到0为手机文件管理可以看到的路径了,以下为微信下载的文件举例

const filePath = '/storage/emulated/0/Download/WeiXin/shuju.dat';

// 替换为你的实际文件路径
            this.ceshidata= readFileContent(filePath);

安卓10+以下系统获取文件目录

通过5+ 提供的api获取文件目录 plus.io.resolveLocalFileSystemURL

安卓10+以上系统获取文件目录

 通过引入安卓原生类 File 获取文件列表及文件

// 导入 java.io.File 类 var File = plus.android.importClass('java.io.File');

// 创建 File 对象,指定目录路径 var dir = new File(dirPath);

// 获取目录下的文件列表 var files = dir.listFiles();

2.完整的读取代码

	function readFileContent(filePath) {
				try {
					// 导入必要的类
					var File = plus.android.importClass('java.io.File');
					var FileInputStream = plus.android.importClass('java.io.FileInputStream');
					var InputStreamReader = plus.android.importClass('java.io.InputStreamReader');
					var BufferedReader = plus.android.importClass('java.io.BufferedReader');

					// 创建File对象
					var file = new File(filePath);
					// 输出更多调试信息
					console.log('Attempting to read file at path: ' + filePath);
					console.log('File exists: ' + file.exists());
					console.log('Is file: ' + file.isFile());
					console.log('Absolute path: ' + file.getAbsolutePath());
					if (file.exists() && file.isFile()) {
						// 打开文件输入流
						var fis = new FileInputStream(file);
						var isr = new InputStreamReader(fis, "UTF-8"); // 指定编码格式
						var br = new BufferedReader(isr);

						var content = '';
						var line;
						while ((line = br.readLine()) !== null) {
							content += line + '\n';
						}

						// 关闭资源
						br.close();
						isr.close();
						fis.close();

						// 输出文件内容到控制台或做其他处理
						console.log('File: ' + file.getName() + ', Content: ' + content);
						
						return content; // 或者你可以选择返回文件内容
					} else {
						console.log('The specified file does not exist or is not a regular file.');
					}
				} catch (e) {
					console.error('Error reading file: ' + e.message);
				}
			}


http://www.kler.cn/a/449660.html

相关文章:

  • 为什么要用云电脑玩游戏?5大好处揭秘,ToDesk云机性能强又易用
  • 探寻快速排序的局限性及其优化策略
  • Linux配置ssh登陆
  • Java内存区域进一步详解
  • java开发入门学习五-流程控制
  • Zookeeper基本命令解析
  • Windows中Microsoft Edge兼容性问题|修复方案
  • Git的简介
  • .NET Core 项目配置到 Jenkins
  • dbcat mysql 慢日志监控利器
  • 潜在狄利克雷分配LDA 算法深度解析
  • Java面试要点94 - Java分布式锁的实现与应用
  • OSPF的基本配置
  • 从0-1逐步搭建一个前端脚手架工具并发布到npm
  • 基于python使用UDP协议对飞秋进行通讯—DDOS
  • 从AI换脸到篡改图像,合合信息如何提升视觉内容安全?
  • 【深度学习】论文复现-对论文数据集的一些处理
  • 加密货币地址的基本概念
  • 4、mysql高阶语句
  • YOLOv11融合[ECCV2024]FADformer中的FFCM模块
  • ip地址和网络号关系是什么
  • linux ipmitool配置机器的BMC(服务器管理后台)
  • COMSOL with Matlab
  • 数据库知识全解析:从基础原理到应用实践
  • Android Jetpack DataBinding源码解析与实践
  • 梳理你的思路(从OOP到架构设计)_简介设计模式