Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/193.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
android:如何使用内部存储器保存和加载和int值_Android_Save_Int_Storage_Internal - Fatal编程技术网

android:如何使用内部存储器保存和加载和int值

android:如何使用内部存储器保存和加载和int值,android,save,int,storage,internal,Android,Save,Int,Storage,Internal,我正在寻找一种在android中保存和加载数据的方法,我正在使用eclipse& 我根本不想使用SharedReference,所以请不要建议这样做 除此之外,我想我已经明白了,我已经这样做了: int blankval = 1; int targetval = 0; FileOutputStream fou = openFileOutput("data.gds", MODE_PRIVATE); fou.write(blankval); fou.write(targetval); fou.clo

我正在寻找一种在android中保存和加载数据的方法,我正在使用eclipse& 我根本不想使用SharedReference,所以请不要建议这样做

除此之外,我想我已经明白了,我已经这样做了:

int blankval = 1;
int targetval = 0;
FileOutputStream fou = openFileOutput("data.gds", MODE_PRIVATE);
fou.write(blankval);
fou.write(targetval);
fou.close();
虽然我不知道该怎么做,但我尝试了很多方法,所有这些都会使应用程序在执行时崩溃

我想将每个val加载回两个INT blankval和targetval,以便如果我这样做:

blankval = 5;
targetval = 7;
load();

load然后会将它们的值设置回0和1,SharedReferences将是一个不错的选择,但是如果你想避免这种情况,那么为什么不使用Android提供的SQLite数据库呢。

我不得不建议你使用SharedReferences:,但无论如何

如果需要使用刚刚写入的值,则应使用openFileInput:

例如:

FileInputStream in = openFileInput("data.gds");
InputStreamReader inputStreamReader = new InputStreamReader(in);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
String line;
while ((line = bufferedReader.readLine()) != null) {
    //Convert each line to your int
    int value = Integer.parseInt(line); 
}
当然,要使其正常工作,您需要使用OutputStreamWriter将每行一个int写入文件:

逐行写入int的示例:

  writer = new OutputStreamWriter(fou);
  int blankval = 1;
  writer.write(String.valueOf(blankval)+"\n");
  int targetval = 0;
  writer.write(String.valueOf(targetval)+"\n");
  writer.close();

或者类似的东西……

SharedReferences是安全有效的,只是想知道为什么不使用它?如果有理由不使用它,它可能有助于确定实现您所需的最佳方式。您确实意识到共享引用只是使用保存到内部存储的XML文件,不是吗?为什么要重新发明轮子?我真正想要的是使用read来获取int值,我不喜欢SharedReferences,因为我想使用自己的文件格式,比如.gdsOK,第一点-FileOutputStream的writeint方法写入单字节8位带符号整数,而默认的Java int是32位带符号整数。只要您意识到这一点,并且可以进行补偿,即,您永远不需要保存任何小于-128或大于128的值,这就可以了。第二点,你说你已经尝试了很多东西,但是你没有给我们展示任何东西,所以我们只能猜测你做了什么。第三点-你说应用程序崩溃了,但你没有发布日志来显示崩溃时的堆栈跟踪。LOL-如果OP不想使用SharedReferences,那么SQLite DB真的是太过了。@Squonk是的,但是使用文件系统存储一些int值,我无法想象这样的编码:我该如何编写我的int?