android10 TF卡的ZIP壓縮和解壓

2021-10-05 12:26:09 字數 1962 閱讀 7654

1.android10想要操作tf卡或者內部儲存,還是需要先使用saf獲取儲存許可權.本文需先了解saf框架和kotlin.

val sm =

getsystemservice(context.storage_service) as storagemanager

val volume = sm.storagevolumes

val size = volume.size

for (i in 1 until size)

在onactivityresult中將許可權uri儲存起來,方便後來使用.

override fun onactivityresult(requestcode: int, resultcode: int, data: intent?)
我們已經獲取到了外部儲存的根uri許可權

2.想要解壓tf卡壓縮檔案其實很簡單,首先通過tf的根uri找到我們需要的zip檔案.這裡我們的壓縮檔案是/zipfiles/res.zip

val tfpath = documentfile.fromtreeuri(this, uri.parse(uri))

var zipfiles = tfpath!!.findfile("zipfiles")

if (!zipfiles!!.exists())

val findfile = zipfiles!!.findfile("res.zip")

然後將其轉換成zipinputstream,zipinputstream.nextentry方法可以獲取壓縮包中每個壓縮檔案的實體,將其寫出到想要的位置就可以了.

val inputstream = contentresolver.openinputstream(findfile!!.uri)

val zipinputstream = zipinputstream(bufferedinputstream(inputstream!!))

var entry: zipentry

val buf = bytearray(1024)

while (null != zipinputstream.nextentry.also ) ))

outputstream!!.close()

}inputstream.close()

zipinputstream.close()

3.壓縮的方法就是解壓的你過程,先通過uri建立壓縮檔案

val tfpath: documentfile = documentfile.fromtreeuri(this, uri.parse(uri))!!

var zipfiles: documentfile = tfpath.findfile("zipfiles")!!

if (!zipfiles.exists())

"test.zip")!!

val outputstream = contentresolver.openoutputstream(createfile.uri)

val zipoutputstream = zipoutputstream(bufferedoutputstream(outputstream!!))

zip(zipoutputstream, "", zipfiles)

zipoutputstream.flush()

zipoutputstream.close()

private fun zip(zipoutputstream: zipoutputstream, zipname: string, zipfiles: documentfile) 

} else != -1)

zipoutputstream.flush()

zipoutputstream.closeentry()

input.close()

}}

to be continued

android監聽TF卡插拔事件 判斷

如何通過註冊廣播獲知tf插拔事件 註冊廣播 intentfilter filter new intentfilter filter.addaction intent.action media eject filter.addaction intent.action media mounted fil...

Android開發中如何獲取外接TF卡的路徑

android獲取外部sdcard的官方呼叫是 environment.getexternalstoragedirectory 但是根據不同機型,是有不同的結果的。如果手機支援tf卡擴充套件,並且本身沒有大容量儲存,比如說htc老款手機 g3之類的,那麼獲取到的是tf卡的路徑。這是對的。如果手機本身...

Android對於外接TF卡的讀寫操作(許可權獲取)

android4.4 api級別19 引入了儲存訪問框架 saf saf其中的部分功能就是通過其獲取對外置 卡的讀寫許可權,從而操作外接 卡 原文介紹連線,這裡不對其進行複製貼上,本帖直接講述如何通過documentfile在獲得saf的後,在外置sd卡中讀寫資料 android 4.4提供了複雜的...