Android NDK вылетает при чтении / записи файлов

Я портировал очень большое приложение на Android. Он получает двоичные данные по TCP/IP и записывает их в файлы, которые он использует время от времени в приложении. Каталог, в который он сохраняет файлы, по умолчанию имеет значение./file_cache. Здесь идет не так:

fileHandle = fopen(filename,"wb");

имя файла в этом случае "file_i", где я начинается с 0 и увеличивается для каждого файла.

Программа аварийно завершает работу при записи, и она не должна аварийно завершать работу с первым файлом, иногда она достигает 10-го файла. Когда это терпит крах, fileHandle заканчивается как НЕДЕЙСТВИТЕЛЬНЫЙ.

Имя файла изначально в wchar, но перед этим преобразуется (я распечатываю его в логгере, чтобы убедиться, что оно правильное).

Что я пробовал:

  • Я добавил все разрешения, которые, похоже, имеют какое-либо отношение к внешнему хранилищу файлов для чтения / записи.

  • Я пробовал разные места /sdcard/files и / data / data // files

Вопросы:

  1. Какова текущая директория, то есть где файлы на самом деле заканчиваются настройками по умолчанию?

  2. Что может быть причиной того, что fopen возвращает null, что, в свою очередь, является причиной сбоя?

Очень благодарен за любые идеи.

1 ответ

Решение

Я нашел проблему, хотя это была общая ошибка программы. Имя файла "file_i" было связано с тем, что некоторому сложному коду был присвоен размер 1, который, естественно, был слишком мал, что вызывало ошибку сегментации. Так что это не имеет ничего общего с FOPEN. На самом деле, все ошибки сегментации, которые у меня были, были вызваны ошибкой, подобной этой, так что может стоить тщательно изучить ваш код, когда вы возитесь с char/wchar.

Кроме того, я использую папку /data/data/.., которая работает нормально, на самом деле не пробовал sdcard, но не могу понять, почему она не будет работать.

Другие вопросы по тегам