【问题标题】:File.listFiles() crashes for invalid UTF-8 charactersFile.listFiles() 因无效的 UTF-8 字符而崩溃
【发布时间】:2018-04-10 16:23:38
【问题描述】:

我手机存储中的一些文件夹包含如下文件:

  • dzG럫saᡑῑ.sg
  • 존Ὣ 졼).sg

因此,当我尝试使用 File.listFiles() 函数从该文件夹中读取文件时,我的应用程序崩溃了:

在应用程序中检测到 JNI 错误:输入无效修改 UTF-8: 非法起始字节......字符串:'dzG럫saᡑῑ.sg'

我发现是哪个应用创建了它们,但这并不重要,例如,如果其他用户的手机内存中有类似的文件,我不能只要求他们删除它

我只是想避免应用崩溃

即使 try...catch 也无济于事(导致 JNI/LINUX/C++ 出错):

    try {
        ... = dir.listFiles();
    } catch (RuntimeException e) {
        //
    }

那么我该如何解决这个问题呢?

同样的问题File.listFiles crashes for invalid UTF-8 characters

但是用签名apk回答不好,它与这个问题有什么关系? 还有其他解决方案吗?

似乎调试 apk 是自动签名的(带有调试证书):

从 IDE 运行或调试项目时,Android Studio 使用由 Android SDK 工具。第一次运行或调试项目时 Android Studio,IDE 会自动创建调试密钥库和 $HOME/.android/debug.keystore 中的证书,并设置密钥库 和密钥。

【问题讨论】:

  • 你有解决这个问题的办法吗?
  • 如果你有解决方案,请在这里分享...
  • @user924 你解决了吗?如何?请在这里分享..

标签: android utf-8


【解决方案1】:

作为 API>=26 的解决方法,您可以使用 DirectoryStream

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2014-05-30
  • 1970-01-01
  • 2023-03-23
  • 2014-05-04
  • 2017-10-02
  • 2012-05-02
  • 1970-01-01
  • 2017-04-16
相关资源
最近更新 更多