有些時候,我們需要保存一些數據在app的目錄中。這個時候我們就需要使用path_provider 獲取文件路徑。
安裝
pubspec.yaml
dependencies:
path_provider: ^latest_version
使用
getTemporaryDirectory
臨時目錄,適用於下載的緩存文件,此目錄隨時可以清除。
此目錄為應用程序私有目錄,其他應用程序無法訪問此目錄。
Android 上對應getCacheDir;iOS上對應 NSCachesDirectory。
Directory dir = await getTemporaryDirectory();
return dir.path;
結果:
/data/user/0/com.ilgnefz.flutter_tools/cache
getApplicationSupportDirectory
應用程序可以在其中放置應用程序支持文件的目錄的路徑。
將此文件用於您不想向用戶公開的文件, 您的應用不應將此目錄用於存放用戶數據文件。
在iOS上,對應 NSApplicationSupportDirectory ,如果此目錄不存在,則會自動創建;在Android上,對應 getFilesDir。
Directory dir = await getApplicationSupportDirectory();
return dir.path;
結果:
/data/user/0/com.ilgnefz.flutter_tools/files
getLibraryDirectory
應用程序可以在其中存儲持久性文件,備份文件以及對用戶不可見的文件的目錄路徑。
在Android上,此函數拋出 [UnsupportedError] 異常,沒有等效項路徑存在。
try {
Directory dir = await getLibraryDirectory();
return dir.path;
} catch (e) {
return '此設備不受支持';
}
getApplicationDocumentsDirectory
應用程序可能在其中放置用戶生成的數據或應用程序無法重新創建的數據的目錄路徑。
在iOS上,對應 NSDocumentDirectory API。 如果數據不是用戶生成的,考慮使用 getApplicationSupportDirectory。
在Android上,對應 getDataDirectory API。 如果要讓用戶看到數據,考慮改用 getExternalStorageDirectory。
Directory dir = await getApplicationDocumentsDirectory();
return dir.path;
結果:
/data/user/0/com.ilgnefz.flutter_tools/app_flutter
getExternalStorageDirectory
應用程序可以訪問頂級存儲的目錄的路徑。
由於此功能僅在Android上可用,因此應在發出此函數調用之前確定當前操作系統。
在iOS上,此功能會引發 [UnsupportedError] 異常,因為無法在應用程序的沙箱外部訪問。
在Android上,對應 getExternalFilesDir(null)。
try {
Directory? dir = await getExternalStorageDirectory();
return dir!.path;
} catch (e) {
return '此設備不受支持';
}
結果:
/storage/emulated/0/Android/data/com.ilgnefz.flutter_tools/files
getExternalCacheDirectories
存儲特定於應用程序的外部緩存數據的目錄的路徑。 這些路徑通常位於外部存儲(如單獨的分區或SD卡)上。
由於此功能僅在Android上可用,因此應在發出此函數調用之前確定當前操作系統。
在iOS上,此功能會拋出 UnsupportedError,因為這是不可能的在應用程序的沙箱外部訪問。
在Android上,對應 Context.getExternalCacheDirs() 或API Level 低於19的 Context.getExternalCacheDir()。
try {
List<Directory>? dir = await getExternalCacheDirectories();
return dir.toString();
} catch (e) {
return '此設備不受支持';
}
結果:
[
Directory: '/storage/emulated/0/Android/data/com.ilgnefz.flutter_tools/cache'
]
getExternalStorageDirectories
可以存儲應用程序特定數據的目錄的路徑。 這些路徑通常位於外部存儲(如單獨的分區或SD卡)上。
由於此功能僅在Android上可用,因此應在發出此函數調用之前確定當前操作系統。
在iOS上,此功能會拋出UnsupportedError,因為這是不可能的在應用程序的沙箱外部訪問。
在Android上,對應 Context.getExternalFilesDirs(String type) 或API Level 低於19的 Context.getExternalFilesDir(String type)。
try {
List<Directory>? dir = await getExternalStorageDirectories();
return dir.toString();
} catch (e) {
return '此設備不受支持';
}
結果:
[
Directory: '/storage/emulated/0/Android/data/com.ilgnefz.flutter_tools/files'
]
getDownloadsDirectory
存儲下載文件的目錄的路徑,這通常僅與台式機操作系統有關。
在 Android 和 iOS 上,此函數將引發 [UnsupportedError] 異常。
try {
Directory? dir = await getDownloadsDirectory();
return dir!.path;
} catch (e) {
return '此設備不受支持';
}