文件名为multibyte字符的File.listFiles()会导致dalvik异常终止

时间:2013-07-29 13:37:59

标签: android c android-ndk dalvik

我遇到了带有某些文件名的File.listFiles()问题。 如果目录包含其名称中包含多字节字符的文件(如Cyrilic或Japanese),以便文件名(而不是整个路径)的总长度超过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,但由于没有任何文档,因此无法管理它。

任何人的想法?

0 个答案:

没有答案