android 14 创建文件java.io.IOException: Operation not permitted

android 14 创建文件java.io.IOException: Operation not permitted

Operation not permitted

问题原因

一般是创建文件时,文件夹或文件名称包含特殊字符,创建文件或文件夹时需要检查文件名称是否合法
参考android.os.FileUtils代码(内部类,App不可直接使用)

 /**
     * 文件名称是否合法(FAT系统)
     */
    fun isValidFatFilename(name: String?): Boolean {
        return name != null && name == buildValidFatFilename(name)
    }

    private fun trimFilename(res: java.lang.StringBuilder) {
        var maxBytes = 255
        var raw = res.toString().toByteArray(StandardCharsets.UTF_8)
        if (raw.size > maxBytes) {
            maxBytes -= 3
            while (raw.size > maxBytes) {
                res.deleteCharAt(res.length / 2)
                raw = res.toString().toByteArray(StandardCharsets.UTF_8)
            }
            res.insert(res.length / 2, "...")
        }
    }


    /**
     * 创建一个合法的文件名称(FAT系统)
     */
    fun buildValidFatFilename(name: String): String {
        if (TextUtils.isEmpty(name) || "." == name || ".." == name) {
            return "(invalid)"
        }
        val res = java.lang.StringBuilder(name.length)
        for (element in name) {
            if (isValidFatFilenameChar(element)) {
                res.append(element)
            } else {
                res.append('_')
            }
        }
        trimFilename(res)
        return res.toString()
    }

	// 不合法的字符
    private fun isValidFatFilenameChar(c: Char): Boolean {
        return if (c.code in 0x00..0x1f) {
            false
        } else when (c) {
            '"', '*', '/', ':', '<', '>', '?', '\\', '|', 0x7F.toChar() -> false
            else -> true
        }
    }

Android文件系统有哪些

参考文章:android操作系统之文件系统详解 安卓常用文件系统

  • 8
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 找不到文件或目录。 简单来说,这个异常是说程序在试图执行读取或写入文件操作时,找不到指定的文件或目录。这可能是因为文件不存在、文件路径不正确、文件被占用或权限不足等原因导致的。 解决方案可能包括检查文件路径是否正确,确保具有正确的读取/写入权限,或确保文件已经正确创建。如果仍然无法解决问题,建议检查程序的错误日志以获取更多的细节信息。 ### 回答2: java.io.ioexception: could not是java程序中的一个错误提示信息,通常表示程序在运行中遇到了读取或写入数据的错误。这个错误信息可能有许多不同的具体原因,如文件权限不足、文件不存在、网络连接中断等等。因此,想要准确地解决这个问题,需要根据具体的提示信息和上下文情况来分析可能的原因。 举个例子,如果错误提示是"java.io.ioexception: could not open file",那么很有可能是因为程序试图打开一个不存在或者没有读写权限的文件。此时我们需要检查程序中相应的文件操作代码是否存在问题,比如是否正确指定了文件路径,是否使用了正确的文件读写模式等等。 如果错误提示是"java.io.ioexception: connection reset",那么就说明程序在进行网络连接时遇到了中断问题。此时我们需要检查网络连接的健康状态,比如是否存在网络延迟、是否出现了网络故障等等。 总之,java.io.ioexception: could not错误提示信息本身并没有给出具体的解决方案,需要根据具体情况去找到问题所在,然后针对性地去解决问题。当然,在日常编程中,我们也可以使用try-catch来捕获并处理这种异常情况,以保证程序能够正常运行并正确处理异常情况。 ### 回答3: java.io.IOException是一种常见的Java异常,它通常表示在读取/写入数据时遇到了某种异常情况。在处理这个异常时,可能会看到一些不同的错误消息,包括“could not create file”、“could not write file”以及其他类似的错误消息。 造成java.io.IOException的原因可能很多,例如: 1. 文件系统错误:当尝试读取或写入磁盘上的文件时,可能会遇到文件系统错误。这些错误可能包括硬盘故障,文件权限问题等。 2. 网络故障:如果在读取或写入数据时使用了网络连接,可能会发生网络故障,例如断开连接或超时等。 3. 代码错误:也可能是代码中的错误导致了IOException异常。例如,可能使用了错误的文件名,或者对不存在的文件进行了操作。除此之外,还可能是在编写读取/写入代码时,忘记关闭数据流,造成了IO资源的耗尽问题。 4. 磁盘满了: 当文件系统的磁盘空间用尽时,会抛出java.io.IOException异常。 解决java.io.IOException异常的方法因情况而异,当遇到此类异常时,可能需要执行各种操作,如检查文件名或路径,检查网络连接状态,也可能需要定位代码错误,并进行修复。 如果是由代码错误引起的java.io.IOException,最好的解决方案是审查和修改代码,并确保对文件和网络资源的操作正确。 当然,预防IO异常的发生,建议在IO操作的时候充实的进行异常处理,保证代码健壮性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值