apk安裝時把程序附帶文件拷貝到手機指定目錄下

      項目已搞定,今天把.apk文件弄到另外一臺非調試手機上用,發現一個問題。因爲要畫圖,所以繪圖的點的數據保存在一個.txt的文本文件中,上次直接把它用usb傳到指定文件夾下的,但是明顯不科學,因爲用戶下載了你的.apk文件,你卻告訴他,還要把這個文本文件拷貝到指定的文件夾下,所以,我就要解決這個問題,就是把文本文件打包在apk文件中,安裝.apk時就讓創建一個程序文件夾,然後把文本文件拷貝到這個目錄文件夾裏,用戶運行程序,就可以繪圖,不用再讓他拷貝一份繪圖的點的座標的數據。同理,其實我這裏還有設計軌廓的數據和標準軌廓的數據也是要初始時就要存在的。

       這裏就給了一個方法,用來解決這個問題。

       首先,你要把運行必須的文件命名好,只能是a-z,0-9這36個字符(它是這麼提醒我的)組成的文件名,然後在你的工程下新建一個文件夾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);

       上面的參數都是自己可以修改的。不過,你安裝之後,如果沒有運行程序,是不會找到這些文件夾的,因爲這是在第一運行是才創建,下次運行,判斷文件已存在,就不做任何處理了。

       其實,這是一個很簡單的細節,就是對文件的操作,不過有時還真的用得到,當然,不僅僅是文本文件,音樂文件也是可以放在這裏面的,大家可以多嘗試一下。

發佈了37 篇原創文章 · 獲贊 14 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章