【发布时间】:2017-04-18 05:48:59
【问题描述】:
我正在使用 Delphi 10.2 Tokyo Firemonkey 编写一个多平台应用程序。我需要检查的一件事是计算机上是否存在 Dropbox。为此,我需要检查是否存在 info.json 文件,然后处理该 json 文件以获取 Dropbox 文件夹的路径。
我编写了这个函数来检查 Dropbox 是否存在:
class function TUtilityMac.DropboxExists: Boolean;
var
infojsonpath: String;
begin
Result:=false;
infojsonpath:='~/.dropbox/info.json';
if not FileExists (infojsonpath, True) then
exit;
Result:=true;
end;
但是当我在 Mac(安装了 Dropbox)上运行它时,FileExists 函数返回 false(不管第二个参数是 True 还是 False)。如果我打开一个终端窗口并执行cd ~/.dropbox,然后执行dir,我会在那里看到 info.json 文件。
对我所缺少的有什么想法吗?不胜感激有关此的任何指示...
【问题讨论】:
-
你确定你真的需要这个弯曲的双重否定逻辑吗?
DropboxExists := FileExists('~/.dropbox/info.json', True) -
这只是一个显示问题的独立代码 sn-p - 不是我应用程序中的实际代码。在我的实际代码中,我找到该文件并解析 json 以获取 Dropbox 文件夹的实际位置。但我同意你的看法,它本来可以像你建议的那样紧凑:)
-
如果你去掉
FileExists()检查,你能用相同的路径加载文件吗?如果是这样,那么忘记FileExists()并始终无条件加载文件并根据需要处理任何加载错误。 -
谢谢@RemyLebeau - 会试一试,让你知道结果如何......
-
@RemyLebeau - 我在尝试加载文件时收到了
EFileNotFoundException。但该文件存在。知道会发生什么吗?
标签: delphi firemonkey delphi-10.2-tokyo