Android - 创建文件夹时出错

时间:2018-04-03 12:30:14

标签: java android kotlin

我试图在模拟器的外部存储中创建一个新文件夹。它工作一次,但不是第二次。 我试过调试,这是调试日志:

>> 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)

1 个答案:

答案 0 :(得分:1)

您正在创建路径中存在:的文件夹。

据我所知,这是一个无效的角色。它在Windows上肯定无效。 (尝试使用冒号创建一个文件夹,您将看到Windows抛出的警告)

尝试格式化日期部分以改为使用.(句号)。视觉上它应该是相似的,并且是一个有效的角色。

尝试使用以下格式的目录友好格式:

new SimpleDateFormat("yyyy-MM-dd HH.mm.ss")