1

我遇到了具有某些文件名的 File.listFiles() 问题。如果目录包含名称中包含多字节字符(例如 Cyrilic 或日语)的文件,因此文件名(不是整个路径)的总长度超过 255 个字节,则 File.listFiles() 方法会导致 delvik 异常终止在 LogCat 中写入以下错误:

07-14 20:06:53.758: A//system/bin/app_process(18698): stack corruption detected: aborted

这是导致此错误的示例文件名:

Аверинцев Сергей Сергеевич - Проповеди. Псалмы, книга Иова (в переводе С.С. Аверинцева). Духовные стихи [Аверинцев С.С., 2004, 128-192 kbps] -- RuTracker.org (ex torrents.ru).url

我尝试使用 NDK 重写整个代码,但函数 scandir 仅返回 255 字节长的名称。它没有异常结束,但文件名被截断。它将上面列出的文件截断为:

Аверинцев Сергей Сергеевич - Проповеди. Псалмы, книга Иова (в переводе С.С. Аверинцева). Духовные стихи [Аверинцев С.С., 2004, 128-192 kbps] -- RuTracker.org (ex torren

我尝试使用 wchar 等效函数,例如 _wopendir、_wreaddir 等,但我无法使用 ndk-build 编译它们。我考虑过使用 Crystax NDK ( http://www.crystax.net/en/android/ndk ),它应该支持 wchar 但由于没有任何文档,因此无法做到这一点。

任何人的想法?

4

0 回答 0