gpt4 book ai didi

java - 在文件中有效地存储 float 和 short 值的数组

转载 作者:行者123 更新时间:2023-11-29 06:05:15 25 4
gpt4 key购买 nike

我目前正处于 Android 应用程序 的规划阶段,我需要在其中读取一些存储在文件中的值。这些值将是未知(但可能很大)数量的 float ,在应用程序中加载时将其放入 FloatBuffer 中。浮点值将以五个一组和三个一组的形式出现。

在高效文件写入(或读取)方面我没有太多经验,但我的想法是使用 DataOutputStream 创建文件, 写 float ,前面有一个描述五组数量的长度索引。之后就可以写三组了。
在撰写本文时,我还发现了 FileChannel这可能有助于直接读取缓冲区,但我以前从未使用过它,并且不确定在这种情况下如何使用它。

现在,在我实际编写任何代码之前,我想就此获得一些意见。使用它是否有效(我特别考虑从文件读取到缓冲区),还是有更好的方法来解决这个问题?
我将在以下文件中包含一些规范:

文件必须能够:

  • 包含五个花车组。
  • 包含三个浮点组。 (都在同一个文件中)
  • 被订购。组的顺序非常重要,组中值的顺序也是如此。
  • 允许高效(快速且不太消耗内存)读入 FloatBuffer。

文件不必是:

  • 可修改。应用程序只会从文件中读取数据,它们永远不会被修改。
  • 安全。文件中的数据绝不会代表任何内容,例如密码或其他敏感数据。
  • 写作速度快。文件的创建将事先在计算机上完成。在移动应用程序中,它将是只读的。

感谢您的回复。

编辑:经过一些快速而肮脏的测试后,我比较了 RandomAccessFile 和缓冲的 DataInputStream 读取数据的性能。结果显示 DataInputStream 快得多(10-100%,取决于文件的数量)。

最佳答案

您可以自己实现所有这些,但我建议您考虑数据库。 Andoroid支持SQLite,拿来用吧。创建 2 个表:GROUP5 和“GROUP53”。定义相关索引,您将能够存储数据,使用任何排序策略检索数据等。

如果您仍然喜欢自己实现,我建议您将数据存储在 2 个文件中:一个用于 5 个字段,另一个用于 3 个字段。在这种情况下,您将始终知道数据记录的大小,因此您将能够使用随机访问(使用 RandomAccessFile 或使用 mark()skip () 用于常规 FileInputStream

使用文件 channel 在这里没有任何优势。它允许同时读取多个文件。相对于常规 FileInputStream (http://alexradzin.blogspot.com/2011/07/file-access-stream-vs-nio-channel.html),从一个文件读取只会导致性能下降。

关于java - 在文件中有效地存储 float 和 short 值的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8757437/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com