我在iPhone应用程序中遇到了问题,其中某些应用程序运行时显示为正常的文件在应用程序重新启动时在某些情况下以0大小显示。我已经全面检查了我的代码。这些文件的编写方式基本上是:是保证iPhone上文件完整性所需的“synchronizeFile”吗?
NSFileHandle *fHandle = [NSFileHandle fileHandleForWritingAtPath: myFileName];
do
{
// code to set value of myNSData
[fHandle writeData: myNSData];
// some more logic here
}
while (!done)
[fHandle closeFile];
我已经看到无论是在模拟器和真实设备上的问题发生。它只是偶尔发生,所以情况很难追踪。
我的问题是:我是否需要调用[fHandle synchronizeFile]来确保数据进入永久存储?在我重新打开应用程序之前,iOS是否有可能从文件缓冲区中丢失数据,然后将其发送到永久存储器,从而导致文件大小为0的文件大小?
很好,但如果他需要一个TCP套接字的文件句柄呢?那么你用'writeToFile:'搞砸了。如果需要多个数据输出,我不会真的建议使用这个。 – 2012-07-28 18:17:47
其实我需要写一个从多个地方获取数据的循环和writeToFile:在这种情况下,atomically不是一个选项。 – DDRider62 2012-07-28 23:10:57
难题,那么文件句柄是必要的 – Stavash 2012-07-29 06:06:32