Android 文本文件未正确写入和存储数据
我在创建和编辑文本文件时遇到一些问题。该文件似乎从未存储数据Android 文本文件未正确写入和存储数据,android,file,read-write,Android,File,Read Write,我在创建和编辑文本文件时遇到一些问题。该文件似乎从未存储数据 我需要创建一个文本文件,如果有的话 没有 如果文件中有数据,请读取该数据并使其可用 存储的数据是一个由三个整数值组成的字符串,用,分隔,例如:String finalWrite=“3,5,1” 所以这个字符串需要拆分,并转换成整数,以允许添加新的计数器 这些新计数器需要写入设备上存储的文本文件中 没有错误发生,也没有强制关闭 我只能通过使用Logcat计算出这些值没有正确存储 我已经审阅了开发站点上的文档。如果有人能帮我或给我指出
- 我需要创建一个文本文件,如果有的话 没有
- 如果文件中有数据,请读取该数据并使其可用
- 存储的数据是一个由三个整数值组成的
,用字符串
分隔,例如:,
String finalWrite=“3,5,1”
- 所以这个字符串需要拆分,并转换成整数,以允许添加新的计数器李>
- 这些新计数器需要写入设备上存储的文本文件中
public void WriteItIn() throws IOException
{
FileOutputStream fOut = openFileOutput("stats.txt", Context.MODE_WORLD_READABLE);
OutputStreamWriter osw = new OutputStreamWriter(fOut);
ReadItIn(); //calls the read method, to get the values from the file
int tmp1 = 0 + countertmp + counter;
int tmp2 = 0 + counterpostmp + counterpos;
int tmp3 = 0 + counternegtmp + counterneg;
finalwrite = "" + tmp1 + "," + tmp2 + "," + tmp3;
osw.write(finalwrite);
osw.flush();
osw.close();
}
读取方法:
public void ReadItIn() throws IOException
{
FileInputStream fIn = openFileInput("stats.txt");
InputStreamReader isr = new InputStreamReader(fIn);
char[] inputBuffer = new char[fIn.available()];
isr.read(inputBuffer);
stringFromFile = new String(inputBuffer);
String [] tmp = stringFromFile.split("\\,");
if(tmp.length > 0)
{
Log.d("READ", " NOT NULL");
for(int i = 0;i<tmp.length ; i++)
{
String temper = tmp[i];
if(temper == null || temper == "")
{
Log.d("NULL", "NULLIFIED");
}
else
try
{
int x = Integer.parseInt(temper, 10);
if(i == 0){counter = x;}
else if(i == 1){counterpos = x;}
else if(i == 2){counterneg = x;}
}
catch(NumberFormatException e)
{
e.printStackTrace();
}
}
}
else
Log.d("READ", "NULL");
}
public void ReadItIn()引发IOException
{
FileInputStream fIn=openFileInput(“stats.txt”);
InputStreamReader isr=新的InputStreamReader(fIn);
char[]inputBuffer=新字符[fIn.available()];
isr.read(输入缓冲区);
stringFromFile=新字符串(inputBuffer);
String[]tmp=stringFromFile.split(“\\,”);
如果(tmp.length>0)
{
Log.d(“读取”、“非空”);
对于(int i=0;i而言,主要问题是,只要调用openFileOutput
,stats.txt文件就会一次又一次地被删除
如果您尝试一步一步地调试代码,您可以看到,在第一次运行应用程序时,当您调用openFileOutput
时,会创建大小为0的文件。您可以从DDMS文件资源管理器中进行检查
因此,当您读取它时,它不包含任何内容,并且ReadItIn
也不读取任何内容。当您写入并关闭它时,您可以从DDMS文件资源管理器中看到该文件存在并且大小>0,这是正确的
但是,当您再次通过WriteIn
时,只要调用openFileOutput
,您就可以从文件资源管理器中看到文件大小返回到0。因此,问题是tmp.length是的,我尝试了两种方式拆分。我认为拆分不是问题,可能是尝试拆分字符串at isnull
拆分一个null仍然会给你一个NullPointerException。@偶然:他说没有强制关闭,所以可能他捕捉到了异常?@Nuktu:我会尝试打印stringFromFile
的普通内容以记录日志。首先,用temper.equals(“)替换temper==”
或类似。谢谢!因此我必须做一些检查,看看文件是否存在?我不知道如何使用openFileOutput
实现这一点,因为它也需要写入文件。我不知道这个API,但从引用来看,它看起来总是会重新创建文件。如果不想重新创建它,可以向其添加write,但是我想这不是你想要的。看看其他的Android文件系统API。你能做的,就是分两个阶段:1)在需要值之前,请检查文件是否存在。2)如果存在,请打开文件进行读取,获取值并关闭。3)如果不存在,请将值指定为其默认初始值。4)然后,当您认为需要回存值时,请重新创建文件进行写入并保存值。