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

apk当安装程序将文件复制到手机自带的指定文件夹

      项目已获得,今天.apk文件以获得另一个非调试手机,发现一个问题。

由于涂料。所以绘图数据的点存储在一个.txt文字档。把它用usb传到指定目录下的,可是明显不科学,由于用户下载了你的.apk文件,你却告诉他,还要把这个文本文件复制到指定的目录下。所以,我就要解决问题。就是把文本文件打包在apk文件里,安装.apk时就让创建一个程序目录。然后把文本文件复制到这个目录目录里,用户执行程序,就能够画图,不用再让他拷贝一份画图的点的坐标的数据。同理,事实上我这里还有设计轨廓的数据和标准轨廓的数据也是要初始时就要存在的。

       这里就给了一个方法,用来解决问题。

       首先。你要把执行必须的文件命名好,仅仅能是a-z,0-9这36个字符(它是这么提醒我的)组成的文件名称,然后在你的project下新建一个目录raw,一般来说这个目录是没有的,由于这个目录下的文件是不会经过压缩的,而是直接复制到apk文件里,最后把你的文件加入到raw目录中,这样就做好了第一步。

      

       类似如上图的创建目录。加入文件就能够了。

       加入了文件,那么怎么copy这些文件到指定文件夹下呢?这里有几点,事实上都是文件操作那一块的知识点。第一,推断指定的文件文件夹和文件是否存在,不存在就要先创建。第二。引用raw中的文件;第三。把raw中文件copy到创建的文件里,或者说是raw中文件写到输出流。再把输入流写到手机上创建的文件里。

       我这里简单的写了一个函数,函数前两个參数,一个是写入到手机上的文件的文件夹路径,一个是新创建的文件名称字。第三个參数是最重要的,也就是raw中文件是以gen文件夹下的R.java中的id来索引的,就像我们的界面里面的button在程序中引用也是通过id来索引的。这第三个參数是一个int型,就是这个文件的id。R.java中是int型,大家能够看看。这个函数代码例如以下:

private void copyfile(String fileDirPath,String fileName,int id) {
			String filePath = fileDirPath + "/" + fileName;// 文件路径
			try {
				File dir = new File(fileDirPath);// 文件夹路径
				if (!dir.exists()) {// 假设不存在,则创建路径名
					dir.mkdirs();
				}
				// 文件夹存在,则将apk中raw文件夹中的须要的文档拷贝到该文件夹下
				File file = new File(filePath);
				if (!file.exists()) {// 文件不存在
					InputStream is = getResources().openRawResource(
							id);// 通过raw得到数据资源
					FileOutputStream fs = new FileOutputStream(file);
					byte[] buffer = new byte[1024];
					int count = 0;// 循环写出
					while ((count = is.read(buffer)) > 0) {
						fs.write(buffer, 0, count);
					}
					fs.close();// 关闭流
					is.close();
				}
			} catch (Exception e) {
				e.printStackTrace();
			}
		}

        我们能够在第一个activity的oncreate方法中调运这个函数。这样安装.apk文件后,第一次打开程序。就创建了指定文件,这个文件是从raw中拷贝过去的。   

createFile("/sdcard/test/data","TB60.txt",R.raw.tb60);
createFile("/sdcard/test/guikuo","设计轨廓.txt",R.raw.sjgk);
createFile("/sdcard/test/guikuo","标准轨廓.txt",R.raw.bzgk);

       上面的參数都是自己能够改动的。只是,你安装之后,假设没有执行程序,是不会找到这些目录的。由于这是在第一执行是才创建。接下来执行,它的结论是文件已经存在,无论该交易尚未完成。

       其实,这是一个很easy详细信息,它是该文件的操作,但是,有时真的用得到,当然。但不是一个文本文件。音乐文件也可以放在这里面,我们可以更多的尝试。

相关文章:

  • 接口测试培训:HTTP协议基础 1
  • 动态计算UITableViewCell高度详解
  • hibernate(四)ID生成策略
  • 【iCore3 双核心板】例程十四:FATFS实验——文件操作
  • 配置Server.xml
  • 工作小记(五)----完工归来
  • jQuery API
  • MIT Introduction to Algorithms 学习笔记(四)
  • Java 自动装箱与拆箱(Autoboxing and unboxing)
  • Java多线程中wait, notify and notifyAll的使用
  • 用Android Studio构建及运行android app
  • ArchSummit北京2015精彩回顾
  • Ubuntu OS应用Runtime Enviroment
  • [转]如何判断js中的数据类型
  • 武汉Uber优步司机奖励政策(12月21日-12.27日)
  • conda常用的命令
  • echarts的各种常用效果展示
  • React 快速上手 - 06 容器组件、展示组件、操作组件
  • Sequelize 中文文档 v4 - Getting started - 入门
  • - 概述 - 《设计模式(极简c++版)》
  • 开源地图数据可视化库——mapnik
  • 码农张的Bug人生 - 初来乍到
  • 配置 PM2 实现代码自动发布
  • 前端面试之闭包
  • 数据库写操作弃用“SELECT ... FOR UPDATE”解决方案
  • puppet连载22:define用法
  • ​第20课 在Android Native开发中加入新的C++类
  • # Maven错误Error executing Maven
  • (4) openssl rsa/pkey(查看私钥、从私钥中提取公钥、查看公钥)
  • (Redis使用系列) Springboot 在redis中使用BloomFilter布隆过滤器机制 六
  • (ZT)薛涌:谈贫说富
  • (附源码)springboot人体健康检测微信小程序 毕业设计 012142
  • (附源码)流浪动物保护平台的设计与实现 毕业设计 161154
  • (官网安装) 基于CentOS 7安装MangoDB和MangoDB Shell
  • (转)LINQ之路
  • (转)创业的注意事项
  • ../depcomp: line 571: exec: g++: not found
  • .net php 通信,flash与asp/php/asp.net通信的方法
  • .NET开源的一个小而快并且功能强大的 Windows 动态桌面软件 - DreamScene2
  • /var/log/cvslog 太大
  • @JoinTable会自动删除关联表的数据
  • @selector(..)警告提示
  • [ IO.File ] FileSystemWatcher
  • [Big Data - Kafka] kafka学习笔记:知识点整理
  • [BZOJ3223]文艺平衡树
  • [CSS] 点击事件触发的动画
  • [EFI]Dell Latitude-7400电脑 Hackintosh 黑苹果efi引导文件
  • [FUNC]判断窗口在哪一个屏幕上
  • [LeetCode] 197. 上升的温度
  • [Linux] PXE批量装机
  • [MTK]安卓8 ADB执行ota升级
  • [POI2009]WIE-Hexer
  • [Spring] IOC控制反转/DI依赖注入详细讲解
  • [SpringCloud] OpenFeign核心架构原理 (一)
  • [WeChall] Training: Encodings I (Training, Encoding)