Android NDK вылетает при чтении / записи файлов
Я портировал очень большое приложение на Android. Он получает двоичные данные по TCP/IP и записывает их в файлы, которые он использует время от времени в приложении. Каталог, в который он сохраняет файлы, по умолчанию имеет значение./file_cache. Здесь идет не так:
fileHandle = fopen(filename,"wb");
имя файла в этом случае "file_i", где я начинается с 0 и увеличивается для каждого файла.
Программа аварийно завершает работу при записи, и она не должна аварийно завершать работу с первым файлом, иногда она достигает 10-го файла. Когда это терпит крах, fileHandle заканчивается как НЕДЕЙСТВИТЕЛЬНЫЙ.
Имя файла изначально в wchar, но перед этим преобразуется (я распечатываю его в логгере, чтобы убедиться, что оно правильное).
Что я пробовал:
Я добавил все разрешения, которые, похоже, имеют какое-либо отношение к внешнему хранилищу файлов для чтения / записи.
Я пробовал разные места /sdcard/files и / data / data /
/ files
Вопросы:
Какова текущая директория, то есть где файлы на самом деле заканчиваются настройками по умолчанию?
Что может быть причиной того, что fopen возвращает null, что, в свою очередь, является причиной сбоя?
Очень благодарен за любые идеи.
1 ответ
Я нашел проблему, хотя это была общая ошибка программы. Имя файла "file_i" было связано с тем, что некоторому сложному коду был присвоен размер 1, который, естественно, был слишком мал, что вызывало ошибку сегментации. Так что это не имеет ничего общего с FOPEN. На самом деле, все ошибки сегментации, которые у меня были, были вызваны ошибкой, подобной этой, так что может стоить тщательно изучить ваш код, когда вы возитесь с char/wchar.
Кроме того, я использую папку /data/data/.., которая работает нормально, на самом деле не пробовал sdcard, но не могу понять, почему она не будет работать.