[英]Copying of moving a file inside Internal storage on Android
在 Android 應用程序中,用戶可以錄制他的聲音。 錄音保存在由以下定義的文件中:
audioTempFile = File(getFilesDir(), "Audio_Temp_File")
然后我想讓用戶選擇要保存的文件的最終文件夾和文件名。 因此,上面的 audioTempFile 可以用於可能的下一次錄制,而不會破壞當前的錄制。
例如,讓我們假設我希望將文件保存在這個名為 finalFile 的文件中:
val rootDir = getFilesDir()
val storeDir = File(rootDir, "MyStorageDirectory")
val finalFile = File(storeDir, "MyFinalFileName")
如何移動或可能將audioTempFile復制到finalFile ?
我通過搜索網絡沒有找到任何明確的答案。
我不知道保存到特定位置,但這是我在我的應用程序中保存錄音的方式。
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q){
try{
val values = ContentValues()
values.put(MediaStore.MediaColumns.DISPLAY_NAME, allFiles[position].name)
values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/mp3")
values.put(MediaStore.MediaColumns.RELATIVE_PATH, Environment.DIRECTORY_MUSIC)
val savedAudio = context.contentResolver.insert(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, values)
val outputStream = savedAudio?.let {
context.contentResolver.openOutputStream(it)
}
val fis = FileInputStream(allFiles[position])
var length : Int
val buffer = ByteArray(8192)
while (fis.read(buffer).also { length = it } > 0) {
outputStream?.write(buffer, 0,length)
}
Toast.makeText(context, "Audio Saved to Music Folder", Toast.LENGTH_SHORT).show()
}catch (e : IOException){
Toast.makeText(
context,
"There was an error saving the file",
Toast.LENGTH_SHORT
).show()
e.printStackTrace()
}
}else{
try {
val audioDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC)
val audio = File(audioDir, allFiles[position].name)
val fis = FileInputStream(allFiles[position])
val fos = FileOutputStream(audio)
var length : Int
val buffer = ByteArray(8192)
while (fis.read(buffer).also { length = it } > 0){
fos.write(buffer,0,length)
}
Toast.makeText(context, "Audio Saved to Music Folder", Toast.LENGTH_SHORT).show()
}catch (e : IOException){
Toast.makeText(
context,
"There was an error saving the file",
Toast.LENGTH_SHORT
).show()
e.printStackTrace()
}
}
如果您想保存公共目錄以外的文件,則需要MANAGE_EXTERNAL_STORAGE
權限。 建議使用 MediaStore API 來保存您的文件。
如果我錯了,請糾正我,因為我還在學習。
希望這對你有幫助:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.