好的,所以看完和阅读有关在内部存储中保存和加载标准变量的几个教程后,我总是很困惑。基本上,我找不到任何有用的参考资料,这将告诉我更多相关信息。因为我没有使用Java的IOStream经验,所以我正在寻找一些可以解释我需要的东西的教程,所以我会知道我在做什么,而不仅仅是复制+粘贴代码,而且无人问津。感谢您的所有建议。
所以总结一下我想要的东西 - 我有布尔的String和2D数组的数组(String foo [500]; boolean bool [10] [20]),我想要做的是保存并加载到/来自内部存储。此外,在此IO流启动之前,我需要检查文件是否存在 - 如果不存在,则创建它们。
答案 0 :(得分:1)
您必须使用字节缓冲区将变量存储到字节流中,然后将此缓冲区写入文件中。 您必须导入以下内容:
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.ByteBuffer;
这是一个3步操作:1分配缓冲区,2个写入数据到缓冲区,3个写入缓冲区到文件:
// First you have to calculate the size of your strings in bytes
int size = 0;
// Assuming string is encoded in ASCII, so one byte for each
// character, else you have to multiply the string size by the size
// of a encoded character
for (int i = 0; i < 500; i++)
size += foo[i].length();
// Allocating the buffer, 10 * 20 is your boolean array size, because
// one boolean take one byte in memory
ByteBuffer buffer = ByteBuffer.allocate(size + 10 * 20);
// Put your strings into your buffer
for (int i = 0; i < 500; i++)
buffer.put(foo[i].getBytes());
// To store boolean we will store 0 for false and 1 for true
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 20; j++)
buffer.put((byte) (bool[i][j] ? 1 : 0));
}
// And finally write your buffer into your file
try {
// If file doesn't exist, it will be created
FileOutputStream fos = openFileOutput("file", MODE_PRIVATE);
// buffer.array is a 1D array of the bytes stored in the buffer
fos.write(buffer.array());
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
答案 1 :(得分:0)
听起来像您可以通过共享首选项完成所有操作。您可以使用SharedPreferences保存任何原始数据。
以下内容包括实施细节,还包括文件API和外部存储解决方案:http://www.vogella.com/tutorials/AndroidFileBasedPersistence/article.html