我找不到使用 Haxe、Openfl、Lime 或其他库检查设备中可用空间的方法。我想避免下载数据超过每个设备中为应用程序推荐的大小。你做什么检查?
问问题
164 次
1 回答
-1
尝试创建该大小的文件!然后删除它或重新打开并在其内容上写入(而不是附加)。
我不知道 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
。如果没有足够的空间,不要忘记删除文件。
于 2015-09-26T11:59:37.280 回答