我找不到一种方法来检查使用Haxe, Openfl, Lime或其他库的设备中的可用空闲空间。我希望避免下载的数据超过每个设备中应用程序的推荐大小。你怎么检查呢?
试着创建一个这么大的文件!然后删除它或重新打开并在其内容上写入(而不是追加)。
我不知道Haxe支持的所有平台是否都能很好地使用这个技巧,但据报道,这个算法在许多地方和语言中都能工作(我个人在Ruby中测试了它,并在c++/. net中看到了同样的建议)。检查X字节的磁盘空间是否可用:
-
open
写入 的新文件 -
seek
开头X-1字节 -
write
一个字节的数据(无论你想,0
,42
…) -
close
文件(可能与手头的任务无关,但无论如何不要忘记这样做)
如果磁盘空间不足,您可能会在此算法的某个点上遇到异常。你必须找出可能出现的错误,并适当地处理它们。
使用ihx
我发现这是工作的,只需要Haxe标准库:
haxe interactive shell v0.3.4
type "help" for help
>> import sys.io.*;
>> var f = File.write('loca', true)
sys.io.FileOutput : { __f => #abstract }
>> f.seek(39999, FileSeek.SeekBegin)
Void : null
>> f.writeByte(0)
Void : null
>> f.close()
Void : null
经过这些操作后,在我的工作目录中有一个名为loca
的文件,大小正好为40000字节。
顺便说一下,在ihx
中做这些事情时要小心,因为它每次都会重新运行整个会话并附加最后输入的行。
正在进行的实验:
但是,当磁盘空间不足时,它可能不会因为错误而失败。在这种情况下,您必须使用sys.FileSystem.stat(path).size
检查实际尺寸。如果没有足够的空间,不要忘记删除文件。