我找不到使用Haxe,Openfl,Lime或其他库检查设备中可用空间的方法。 我想避免下载超过每台设备中应用推荐尺寸的数据。 你怎么做才能检查?
答案 0 :(得分:-1)
尝试创建该大小的文件!然后删除它或重新打开并写入(不附加)其内容。
我不知道Haxe支持的所有平台是否都可以正常使用这个技巧,但据报道这种算法可以在许多地方和语言中运行(我亲自在Ruby中测试过并看过the same suggestion for 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
检查实际尺寸。如果没有足够的空间,请不要忘记删除文件。