我试图在模拟器的外部存储中创建一个新文件夹。它工作一次,但不是第二次。 我试过调试,这是调试日志:
>> Let's debug why this directory isn't being created:
Is it working?: false
Does it exist?: false
What is the full URI?: file:/storage/emulated/0/Notepad/Apr%203,%202018%2012:27:46%20PM
--
Can we write to this file?: false
>> We can't write! Do we have WRITE_EXTERNAL_STORAGE permission?
We do have permission - the problem lies elsewhere.
Are we even allowed to read this file?: false
--
>> End of debugging.
这就是错误:
java.io.FileNotFoundException: /storage/emulated/0/Notepad/Apr 3, 2018 12:27:46 PM/database: open failed: ENOENT (No such file or directory)
它在API 23和API 27上运行良好,但它在API 17和API 19上失败。
可能有什么不对?为什么不创建文件夹? 我有读写权限,所以我确定这不是错误,它正在使用API 23。
修改
这是日志之前的代码
val backupFolder = File(Environment.getExternalStorageDirectory(), "Notepad")
if (!backupFolder.exists()) backupFolder.mkdir()
val date = SimpleDateFormat.getDateTimeInstance().format(System.currentTimeMillis())
val newBackupFolder = File(backupFolder, date)
newBackupFolder.mkdir()
这是在日志之后:
val backupFile = File(newBackupFolder, "database")
databaseFile.copyTo(backupFile)
答案 0 :(得分:1)
您正在创建路径中存在:
的文件夹。
据我所知,这是一个无效的角色。它在Windows上肯定无效。 (尝试使用冒号创建一个文件夹,您将看到Windows抛出的警告)
尝试格式化日期部分以改为使用.
(句号)。视觉上它应该是相似的,并且是一个有效的角色。
尝试使用以下格式的目录友好格式:
new SimpleDateFormat("yyyy-MM-dd HH.mm.ss")