當前位置:首頁 » 安卓系統 » android內部存儲讀取

android內部存儲讀取

發布時間: 2024-02-26 03:27:20

⑴ 手機內部存儲空間是哪個文件夾

/storage/emulated/0 手機的內部儲存根目錄,/storage/emulated/1 手機的內存卡儲存根目錄。

android的API的得到的就是/storage/emulated/0/,這個路徑我們用的時候一般直接進/sdcard/或者/mnt/sdcard/,其實是一個相同的位置。

/storage/emulated/0這個是手機內部存儲空間(即手機內存),手機連接電腦後,在手機上選擇管理文件就可以查看了。



擴展汪搭資料

主要敬余包含自身系統占據的空間和用戶可用的空間困稿拿兩部分。ROM相當於PC機上的硬碟,用來存儲和保存數據。

即使是斷電,ROM也能夠保留數據。手機中的系統文件,或者圖片、音樂、照片等通常是存儲在這裡面的。

從技術上講,這個代碼在Windows上也能運行,因為python會在調用open()函數時識別出任何一種斜杠。即便如此,你也不應該依賴它。

不是所有的python庫都可以在錯誤的操作系統上使用錯誤的斜杠,特別是當它們有外部程序或庫介面時。並且,Python對混合斜杠類型的支持僅限Windows,它無法反向工作。

參考資料

網路—手機系統內存

鳳凰網—Python小技巧:3個處理文件路徑的簡單方法

⑵ 安卓內外部存儲完全解析 -- 別再弄混了

安卓開發離不開手機存儲,然而大部分人對於安卓開發中的存儲概念存在誤區,內部外部SD卡傻傻分不清?

以下引用來自對 官方文檔 的理解

呵呵呵,先別說話,然而重點來了(敲黑板),按照官方的說法,

內部存儲是指系統的存儲空間,沒有root是訪問不到的呦親,比如sharedPreferenced或者database都是保存在這裡面的。

外部存儲,又分為 2 部分:

然而現實中,常常有同事把手機那個32G,64G存儲叫做內部存儲= =,寶寶好累,人家明明是 ExternalStorage !!

希望本篇能讓大家對內外部存儲有一個正確鮮明的認識

getFilesDir()

路徑如下

文檔 雲:若想操作該路徑,你需要一個輸出流:

就像這樣:

注: this 是 context 對象

路徑下會看到新文件哦

如果你還想讀取的話, 文檔 雲:你需要一個輸入流:

Log如下

getCacheDir()

文檔 雲:

路徑如下:

特別的,還有getDir() :

getDir("- -!.txt", Context.MODE_PRIVATE).getAbsolutePath()

路徑如下:

app_是系統自己加上去的

內部存儲就是系統的存儲,沒有root你是看不到的,內部存儲最大特點就是可以用Context對象調用各個獲取路徑的方法。比如: context.fileList()
那就是

下的文件遍歷。

而 deleteFile("ABC") 就是

刪除下名為 ABC 的文件
</br></br></br>

操作外部存儲你首先需要以下許可權

當你申請了write許可權,那麼read許可權默認也就通過啦

再判斷狀態:

if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState))

Environment.getExternalStorageDirectory()

這個路徑根據手機廠家不同會有些許變化

直接傳入 Environment 中的常量獲取相應的路徑,如下:

Environment.(Environment.DIRECTORY_ALARMS));

或者

Environment.(Environment.DIRECTORY_PICTURES));

公有目錄下,系統會區分不同類別 (例如鈴聲在系統設置中顯示為鈴聲而不是音樂)

4.4以後訪問該目錄不再需要許可權了

getExternalFilesDir(String type)

eg.
getExternalFilesDir(Environment.DIRECTORY_MUSIC)

特別的:ContextCompat下的

ContextCompat.getExternalFilesDirs(context,type)

返回一個File[],在4.4以後第一條數據默認外部主存儲目錄,第二條數據就是sd卡路徑啦,但是注意4.4之前是沒有第二條數據的哦

該目錄下的特點是卸載程序後,該目錄和其下所有文件均會被刪除

getExternalCacheDir()

注意,使用該目錄注意管理空間,你不能等系統幫你清理,而是自己清理不再需要的緩存

特別的:ContextCompat下的

ContextCompat.getExternalCacheDirs()

道理同上

發現特點了嗎朋友,無論外部內部,只有路徑中有包名,那麼就是私有的,而且是隨著程序的卸載而被刪除的, 有包名的路徑均是Context中的方法,而公有的路徑均是Environment調用的

這個貨真真是要了老命,一般的方法根部不好使,結合網上有的方法加上公司項目中的方法,總結如下:

百分百好用的獲取SD卡路徑方法:

最後集合 path 中的值就是SD卡根目錄

雖然無視版本百分百好用,但是如果你的手機有SD卡槽卻沒插SD卡,該方法最後 path 返回的是 null ,也就是說該方法無法判斷到底是沒插SD卡還是根本不支持SD卡

其實還有一種方法

String path = System.getenv("SECONDARY_STORAGE");

該方法只要你手機支持SD卡,無論你插沒插SD卡,均會返回SD卡路徑,但是 6.0及以上該方法被移除

Environment中源碼其實就是根據這個方法獲取路徑的

安卓官方文檔大家一定要看,他就是我們開發者的權威呀,聖經呀!!

⑶ Android無root,獲取其他應用內部存儲的數據

最近在負責一個項目,需要獲取其他應用的內部存儲中的文件,即data/data/下的文件,並轉存到sdcard上。有一點Android基礎蠢散的都知道data/data/中的文件對其他應用是不可見的,在沒有源碼的條件下,無法直接訪問data/data中的文件。問了公司的大佬,大佬提供了兩種思路,一種是run-as命令進入data/data,直接;另一種是hook。具體怎麼實施,且聽我慢慢道來。

安裝包是debug包(release包也可以利用反編譯重新打包,變成debug包,網上有很多文章可以參考)

1、連接手機到電腦,打開usb調試

2、命令行帶氏氏中輸入 adb shell run-as <包名>

示例:

com.ss.android.ugc.aweme(抖音)不是debug包,無法使用run-as命令。

com.example.yilialin.jsonreport(我自己寫的app)是debug包,使用run-as命令可以進入data/data目錄下,輸入 ls ,可以看到data/data目錄下的所有文件/文件夾

3、輸入 cat <文件名> > <sdcard中的文件名>  ,直接拷貝到sdcard中

示例:

不出現任何提示,表明已經成功拷貝到了sdcard中。

幾行命令直接搞定

1、需要手工敲命令,難以核友實現自動化

2、debug包才能使用

沒有限制,安裝包是release包或者debug包都可以,手機不需要root

有關於xposed插件可以參考文章:https://blog.csdn.net/yzzst/article/details/47659479

https://blog.csdn.net/niubitianping/article/details/52571438

https://blog.csdn.net/niubitianping/article/details/52574650

其實無root也是可以使用virtualxposed的,將xposed插件和想要hook的app克隆到virtualxposed中就可以使用了。

不受root許可權和debug包的限制

前期需要做的事情多,xposed插件編寫比較麻煩

我研究了幾個星期的xposed hook,才學會了怎麼使用,原理還不是特別明白,先用著吧==

聽別人說再多也只是紙上談兵,關鍵是要自己動手操作,有很多問題都是在實施的過程中出現並解決的,在問題中學習不失為一種好方法。

奉上我的xposed插件,供學習參考,有什麼不對的地方,還望不吝賜教!

https://github.com/Yiliayan/douyinxposed.git

⑷ Android 內部存儲/外部存儲 及 讀寫許可權

Android 使用 VFS (Virtual File System) 虛擬文件系統。VFS提供了供存儲設備掛載的節點,同一存儲設備經過分區後,不同的分區可以掛載到不同的節點上,如手機的內置存儲卡。

內置存儲卡 / 外置SD卡
內部存儲 / 外部存儲

VFS 的目錄以 / 為根節點,根節點下面又有不同的節點。物理存儲設備就是掛載到這些節點上。

內部存儲卡/外置SD卡 內部存儲/外部存儲

首先明確, 內置存儲卡/外置SD卡 是在 物理層面 相對於 手機大眾用戶 來說的。
外置SD卡:可手動插拔的SD卡。
內置存儲卡:焊接在手機內部不可拆卸的存儲卡。

而, 內部存 /外部存儲 是在 文件系統邏輯層面 相對於 開發者 來說的,指具體的路徑。
一般針對某個應用而言的,屬於該應用的存儲路徑叫內部存儲,反之為外部存儲。

路徑: /data/data/package_name

/data/data/ 下都是已安裝應用的目錄,該目錄下包含的文件都是以包名作為文件名的目錄,例如 /data/data/com.sankuai.meituan

獲取內部存儲的方式如下:

其中,參數 mode 指創建模式,一種 4 種

注意: Android 7.0 以上 android.os.Build.VERSION.SDK_INT>=Build.VERSION_CODES.N 使用3/4 常量時,將會導致SecurityException,這意味著 不能通過名稱共享私有文件
嘗試共享 file://URI URI將會導致FileUriExposedException,StrictMode API政策禁止在您的應用外部公開file://URL。如果您的應用需要與其他應用共享私有文件,則可以使用 FileProvider 與 FLAG_GRANT_READ_URI_PERMISSION 配合使用。 Android 7.0 行為變更 通過FileProvider在應用間共享文件吧

外部存儲,可以是 外置SD卡 或 內置存儲卡的部分分區。

外部存儲,分為 公共目錄 和 私有目錄

獲取方式

檢查可用性的方法:

Android 4.3 以下,只能通過 Context#getExternalFilesDir(type) 來獲取外部存儲在內置存儲卡分區的私有目錄,無法獲取外置SD卡。

Android 4.3 開始,可以通過 Context#getExternalFilesDirs(type) 獲取一個File數組,包含了內置存儲卡分區和外置SD的私有目錄地址。

可以使用兼容庫的靜態方法 ContextCompate.getExternalFilesDirs() 兼容 4.3。

感謝以下文章作者
解析Android內部存儲、外部存儲的區別

熱點內容
伺服器怎麼做對外ip 發布:2024-11-28 09:41:07 瀏覽:798
編譯java的程序需要使用什麼命令 發布:2024-11-28 09:28:03 瀏覽:656
python二進制utf8 發布:2024-11-28 08:56:41 瀏覽:253
三方網站源碼 發布:2024-11-28 08:30:51 瀏覽:108
windows版ftp軟體免費下載 發布:2024-11-28 08:25:28 瀏覽:857
淘寶帳號怎麼改密碼 發布:2024-11-28 07:46:05 瀏覽:14
監控未配置怎麼辦視頻 發布:2024-11-28 07:44:41 瀏覽:504
android獲取手機的ip 發布:2024-11-28 07:42:13 瀏覽:173
python打開文件窗口 發布:2024-11-28 07:36:13 瀏覽:557
cpu二級緩存的作用 發布:2024-11-28 07:36:12 瀏覽:1001