【问题标题】:Writing/reading array to file将数组写入/读取到文件
【发布时间】:2013-12-13 02:44:02
【问题描述】:

我有一个应用程序,它将创建 3 个数组:2 个带有 double 值,一个带有可以包含任何内容的字符串,字母数字,逗号,点,任何用户可能想要键入或意外键入的任何内容。 double 数组很简单。我发现字符串很棘手。 它可以包含 cake red,blue 1kg paper-clip 之类的东西,你懂的。

我需要以某种方式存储这些数组(我猜在文件中是最简单的方法),读取它们并在用户需要时将它们放回应用程序中。

另外,如果它们不能被人类阅读,只能通过我的应用程序阅读它们会很好。

最好的方法是什么?我的问题是,我怎样才能将它们读回数组。它很容易写入文件,但是然后将它们放回同一个数组中,我将它们放入...我如何分离数组元素以使其不拆分一个元素一分为二,因为它有一个 space 或任何其他元素。

我可以喜欢,制作 3 行文本,每个元素由标签 \t 或其他东西分割,当我阅读它时,每个元素将被该标签分割?这会在阅读时产生任何问题吗? 我想我想知道如何拆分数组的元素,这样它就不会读错了。

谢谢,祝你有美好的一天!

【问题讨论】:

  • 您可以使用特殊字符作为单词分隔符
  • 我可能只是将数据存储在 JSON 中;或者我会使用H2SQLite;我需要查看更多要求才能真正做出决定。

标签: java arrays file save


【解决方案1】:

如果您不希望文件可读,可以使用java.io.RandomAccessFile。 如果您这样做,您可能希望指定最大字符串大小。

保存字符串:

String str = "hello";
RandomAccessFile file = new RandomAccessFile(new File("filename"));
final int MAX_STRING_BYTES = 100; // max number of bytes the string could use in the file   
file.writeUTF(str);
file.skipBytes(MAX_STRING_BYTES - str.getBytes().length);
// then write another..

读取字符串:

// instantiate again
final int STRING_POSITION = 100; // or whichever place you saved it
file.seek(STRING_POSITION);
String str = new String(file.read(MAX_STRING_BYTES));

您可能希望使用文件的开头来存储每个数组的大小。然后将所有值一一存储在文件中,不需要分隔符。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-08
    • 2014-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多