对于 iPhone Firemonkey 应用程序,我将文件(图像)存储在“tmp”文件夹中并在我的应用程序中使用它们。我希望能够通过按需删除所有“.jpg”文件来刷新缓存,但我似乎无法在 FindFirst() 调用中以编程方式匹配它们。
我正在使用一个简单的 FindFirst()/FindNext()/FindClose() 循环来列出(和删除)文件夹的内容。
在 Windows 下,代码可以完美运行。 iOS (iPhone) 下的同一应用程序始终为 FindFirst() 调用返回值 -1(错误),并且 SearchRec.Name 为空。我曾尝试使用各种文件模式,包括“。”但没有成功。
我知道这些文件存在是因为我可以毫无错误地读取和写入它们(在 iOS 和 Windows 下),并且它们的内容是正确的。 FileExists() 检查也会返回 True。
此外,如果我指定一个没有通配符的文件模式来检查已知文件(这实际上不是 FindFirst() 调用的重点),调用永远不会返回(再次这在 Windows 下没问题)!
有没有人在 iOS 下对此有任何成功并可以提供任何想法?
谢谢,
编辑:按要求演示问题的代码片段。 注意:_sFolderName 包含我确认绝对正确的缓存文件夹名称。
function GetCacheFileList : string;
var
iResult: integer;
sr: TSearchRec;
sPath,
sTemp: string;
sFilename : TFilename;
begin
sTemp := '';
sFilename := _sFolderName + '*.jpg';
//
iResult := FindFirst(sFilename, faAnyFile, sr); // ALWAYS RETURNS -1 under iOS
while (iResult = 0) do
begin
sTemp := sTemp + sr.Name + sLineBreak;
iResult := FindNext(sr)
end; { while }
//
FindClose(sr);
Result := sTemp
end;
最佳答案
我不知道 FindFirst 等在非 Windows 平台上的支持情况如何,但我确实记得 Delphi 团队的某个人曾经说过 IOUtils
单元中的例程专门设计用于使文件 I/O 适合跨平台编码。您是否尝试过在 TDirectory
上使用文件搜索方法?
关于ios - 使用 iOS 的 XE2/Firemonkey 下的 FindFirst() 有问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8207377/