读取/写入文件时Android NDK崩溃

时间:2012-10-22 16:54:40

标签: android-ndk native-activity

我已将一个非常大的应用程序移植到Android。它通过TCP / IP接收二进制数据,并将其写入它现在使用的文件,然后再写入应用程序。保存文件的目录默认设置为./file_cache。这里出错:

fileHandle = fopen(filename,"wb");
在这种情况下,

filename是“file_i”,其中i从0开始,并为每个文件递增。

程序在写入时崩溃,并且不必在第一个文件上崩溃,有时它会到达第10个文件。当它崩溃时,fileHandle最终为NULL。

文件名最初是在wchar中,但在之前被转换(我在记录器中将其打印出来以确认它是正确的。)

我尝试了什么:

  • 我添加了似乎与之有关的所有权限 文件读/写外部存储。

  • 我尝试过不同的位置/ sdcard /文件 /数据/数据/<包> /文件

问题:

  1. 当前目录是什么,即文件最终到底在哪里 在默认设置?

  2. 什么可能导致fopen返回null,而这又是导致崩溃的原因?

  3. 非常感谢任何想法。

1 个答案:

答案 0 :(得分:0)

我发现了这个问题,虽然这是一个普通的程序错误。文件名“file_i”是由于某些复杂的代码被分配了大小为1,这自然太小,导致分段错误。所以它与fopen无关。实际上,我所遇到的所有分段错误都是由与此类似的错误引起的,所以每当你弄乱char / wchar时,都值得仔细检查你的代码。

此外,我使用/ data / data / ..文件夹工作正常,实际上没有尝试过SD卡,但是看不清楚为什么它不起作用。