3

我找不到使用 Haxe、Openfl、Lime 或其他库检查设备中可用空间的方法。我想避免下载数据超过每个设备中为应用程序推荐的大小。你做什么检查?

4

1 回答 1

-1

尝试创建该大小的文件!然后删除它或重新打开并在其内容上写入(而不是附加)。

我不知道 Haxe 支持的所有平台是否都可以很好地使用这个技巧,但是据报道这个算法可以在许多地方和语言中工作(我个人在 Ruby 中对其进行了测试,并看到了对 C++/.NET 的相同建议)。检查 X 字节的磁盘空间是否可用:

  • open用于写入的新文件
  • seek从头开始的 X-1 个字节
  • write一个字节的数据(无论你想要什么042...)
  • 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

在这些操作之后,我的工作目录中有一个名为loca40000 字节的文件。

顺便说一句,在执行此类操作时要小心,ihx因为它会重新运行整个会话,每次都会附加最后输入的行。

正在进行的实验:

但是,当磁盘空间不足时,它可能不会因错误而失败。在这种情况下,您必须使用 . 检查实际尺寸sys.FileSystem.stat(path).size。如果没有足够的空间,不要忘记删除文件。

于 2015-09-26T11:59:37.280 回答