Android开发,用Kotlin语言。实现一个文件保存的功能,代码如下: private fun save_2(inputText: String) { try { val file = File(getExternalFilesDir(null), "testdata02") val writer = BufferedWriter(FileWriter(file)) writer.use { it.write(inputText) } } catch (e: IOException) { e.printStackTrace() } } 在Android设备上,getExternalFilesDir(null) 方法返回的是应用的外部文件目录。这个目录是专门为应用存储外部文件而设计的,其他应用无法访问这个目录。具体路径因设备和Android版本而异,但通常会在以下路径之一: 路径1:/storage/emulated/0/Android/data/<your_package_name>/files/ 路径2:/sdcard/Android/data/<your_package_name>/files/
请问什么情况会保存到路径1,什么情况下会保存到路径2?有什么规律可循吗?
在Android设备上,getExternalFilesDir(null)
方法返回的是应用的外部文件目录。这个目录的具体路径因设备和Android版本而异,但通常会在以下路径之一:
/storage/emulated/0/Android/data/<your_package_name>/files/
/sdcard/Android/data/<your_package_name>/files/
设备的存储结构:
/storage/emulated/0/Android/data/<your_package_name>/files/
) 通常是现代Android设备的默认路径。这些设备使用了统一的存储结构,/storage/emulated/0
是一个虚拟路径,指向设备的内部存储。/sdcard/Android/data/<your_package_name>/files/
) 是较老的设备或某些特定设备的路径,这些设备可能仍然使用传统的SD卡路径表示法。Android版本:
设备制造商和定制ROM:
SD卡的存在与否:
为了确定实际的存储路径,可以在代码中打印出路径:
val externalFilesDir = getExternalFilesDir(null)
Log.d("FileSavePath", "External Files Dir: ${externalFilesDir?.absolutePath}")
这将帮助你在运行时查看实际的存储路径。
以下是你提供的代码,添加了路径打印的部分:
private fun save_2(inputText: String) {
try {
val file = File(getExternalFilesDir(null), "testdata02")
Log.d("FileSavePath", "External Files Dir: ${file.absolutePath}")
val writer = BufferedWriter(FileWriter(file))
writer.use {
it.write(inputText)
}
} catch (e: IOException) {
e.printStackTrace()
}
}
通过这种方式,你可以在日志中查看实际的存储路径,并根据设备和Android版本的不同,了解路径的选择规律。