Android 文件操作

文件操作

一、下载文件自定义路径与重命名

开发过程中参考了以下链接:
参考地址:https://www.cxymm.net/article/qq_35620498/112183377
参考地址: https://ask.dcloud.net.cn/question/141013

最终使用:

            // 下载文件
			downloadFile() {
				this.isDownBtn = false;
				var url = this.file;
				let dtask = plus.downloader.createDownload(url, {
						//本地路径开头使用file://,跟上手机文件本地目录storage/emulated/0,就是用户文件管理器能看到的了,之后我创建文件夹,后缀是用于文件命名和格式修改,可以使用变量。
						filename: "_downloads/" + this.getFileName(this.file) //利用保存路径,实现下载文件的重命名
					},(d, status) => {
						//d为下载的文件对象
						if (status == 200) {
							console.log("下载成功");
							//下载成功,d.filename是文件在保存在本地的相对路径,使用下面的API可转为平台绝对路径
							let fileSaveUrl = plus.io.convertLocalFileSystemURL(d.filename);
							bluetoothConnect.sendWatchFace(this.file,fileSaveUrl, this.watchId,
								result => {
									console.log(result);
									this.width = result
								})
						} else {
							//下载失败
							console.log("下载失败");
							plus.downloader.clear(); //清除下载任务
							this.isDownBtn = true;
							this.width = 0;
						}
					});
				try {
					dtask.start(); // 开启下载的任务
					var prg = 0;
					var showLoading = plus.nativeUI.showWaiting("正在下载"); //创建一个showWaiting对象 

					dtask.addEventListener('statechanged', (task, status) => {
						// 给下载任务设置一个监听 并根据状态  做操作
						switch (task.state) {
							case 1:
								showLoading.setTitle("正在下载");
								break;
							case 2:
								showLoading.setTitle("已连接到服务器");
								break;
							case 3:
								prg = parseInt((parseFloat(task.downloadedSize) / parseFloat(task.totalSize)) *
									100);
								showLoading.setTitle("  正在下载" + prg + "%  ");
								if (prg == 100) {
									plus.nativeUI.closeWaiting();
								}
								break;
							case 4:
								plus.nativeUI.closeWaiting();//下载完成
								break;
						}
					});
				} catch (err) {
					console.log('错误信息', err)
					plus.nativeUI.closeWaiting();
				}
			}

二、判断文件是否已存在

参考地址:https://www.html5plus.org/doc/zh_cn/io.html#plus.io.File
最终使用:

            // 判断文件存在
			isFileExists() {
				plus.io.resolveLocalFileSystemURL('_downloads/', (entry) => {
					var directoryReader = entry.createReader();
					//读取这个目录下的所有文件    
					directoryReader.readEntries((entries)=> {
						var i;
						var watchFaceName=this.getFileName(this.file);
						var fileFlag=true;
						for (i = 0; i < entries.length; i++) {
							console.log(entries[i].name);
							if(watchFaceName==entries[i].name){//该文件已下载,直接取该路径传给后端
								fileFlag=false;
								break
							}
						}
						if(fileFlag){
							this.downloadFile();//文件未被下载,进行下载
						}else{//文件已下载,直接取路径
							this.isDownBtn = false;
							var filename="_downloads/" + watchFaceName;
							let fileSaveUrl = plus.io.convertLocalFileSystemURL(filename);
							bluetoothConnect.sendWatchFace(this.file,fileSaveUrl, this.watchId,
								result => {
									console.log(result);
									this.width = result
								})
						}
					})
				})
			},

三、MD5检验

MD5学习:https://www.cxyzjd.com/article/learning__java/90377677
实例参考地址:https://cloud.tencent.com/developer/article/1854222?from=15425
最简洁:

DigestUtils.md5Hex(new FileInputStream(path));

四、文件以url的形式进行md5加密

参考地址:
https://blog.csdn.net/u011974797/article/details/105701904?spm=1001.2101.3001.6650.7&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-7.pc_relevant_antiscanv2&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-7.pc_relevant_antiscanv2&utm_relevant_index=10

最终使用:

/**
 * 获取url链接文件的MD5值
 *
 * @param filePath
 * @throws Exception
 */
public String getMd5(String filePath) throws Exception {
    InputStream inputStream = null;
    String md5 = null;
    try {
        //url路径
        URL url = new URL(filePath);
        //获取连接
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
        connection.setConnectTimeout(3 * 1000);
        //设置请求头
        connection.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.110 Safari/537.36");
        inputStream = connection.getInputStream();
        //DigestUtils为org.apache.commons.codec.digest.DigestUtils下的类
        md5 = DigestUtils.md5Hex(inputStream);
        System.out.println(md5);
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        try {
            if (inputStream != null) {
                //关闭流
                inputStream.close();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    return md5;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值