【问题标题】:Saving int/byte/string data types in Android在 Android 中保存 int/byte/string 数据类型
【发布时间】:2011-11-24 10:44:09
【问题描述】:

抱歉,这可能是一个很长的问题,但我如何在 Android 中实际保存 int/byte/string 数据类型?

我确实知道要将字符串保存到内部存储器中(注意,不是外部或其他任何东西),我必须这样做:

字符串文件名 = "hello_file";

String string = "你好世界!";

FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE);

fos.write(string.getBytes());

fos.close();

保存文件,并且:

int saveTest = fos.read();

fos.close();

从另一个活动或其他东西中读取文件。 (这是正确的吗?)

但是,如果我想将文件保存并读取为 int/byte 数据文件怎么办?这可能吗?我怎么能做到呢?

【问题讨论】:

  • 为什么不改用 SharedPreferences 呢?它可以自动保存/加载任何文件,专为存储基本数据类型而设计。
  • 我希望用户能够将他的文件保存在主活动中,同时访问他/她在小部件中保存的内容。我不认为 sharedpref 资源能让我做到这一点......
  • SharedPreferences 实际上适用于这种情况!您可以在您的小部件提供程序中调用getSharedPreferences 以获取保存的数据。
  • 但这仅适用于单个文件,对吧?我希望用户能够将大量文件保存到存储位置,然后小部件将能够从这样的位置方便地访问这些创建的文件......
  • 好的,我刚刚阅读了文档,似乎将它作为共享首选项也更容易实现。

标签: android save


【解决方案1】:

要保存您的对象,您可以使用 ObjectOutput 类来序列化它们,例如:

// Example object which implements Serializable 
Example example = new Example();

// Save an object 
ObjectOutput out = new ObjectOutputStream(new FileOutputStream(new File(getCacheDir(),"")+"cacheFile.srl"));
out.writeObject( new Integer( YOUR_INT ) );
out.close();


// Load in an object
ObjectInputStream in = new ObjectInputStream(new FileInputStream(new File(new File(getCacheDir(),"")+"cacheFile.srl")));
Integer example_loaded = (Integer) in.readObject();
in.close();

如果类 Example 可以是任何实现可序列化或字节数据的对象,javadocs 也可能会有所帮助!

希望这会有所帮助!

【讨论】:

  • 你是什么意思,“可序列化或字节数据”? int 算不算?
  • 如果一个对象实现了可序列化,可以使用objectoutput类保存。我已经编辑了上面的例子来展示如何保存一个 int。
  • 如果您想了解有关可序列化对象的更多信息,这是一本好书:java.sun.com/developer/technicalArticles/Programming/…
  • 不错。感谢您的链接!还有一个小问题——这是否会影响任何性能,因为我使用的是 Android 而不是纯粹的 Java?
【解决方案2】:

如果你想读取对象,那么你可以从你得到的FileInputStream 创建一个ObjectInputStream。如果您想以二进制形式读取文件,则可以使用与byte[] 一起使用的read 成员函数。

【讨论】:

  • 您有具体的操作方法吗?我真的不明白你在这里做什么:S
  • 你是指Strings,Int,Bytes中的对象吗?对不起,我对编程有点陌生,我还在学习技术知识。我想保存一个包含主要活动的文件,然后自动从小部件访问文件,如果你想知道我实际上想要做什么,那就是。
  • 问题是,我不明白保存和读取是如何工作的,这让我有点困惑:S
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-06-25
  • 1970-01-01
  • 1970-01-01
  • 2012-11-09
  • 1970-01-01
  • 2023-01-08
  • 1970-01-01
相关资源
最近更新 更多