我正在Moment(Android-App)开发一个小游戏,我想将我的Highscores保存到.txt文件中,因为如果我将它保存在列表中,那么每次我都会将列表清空启动App new。 对于java程序,一般来说这对我来说不是问题,因为FileWriter在程序文件夹中创建了一个.txt。 如果我在Android中这样做,我得到(当然)错误,他无法创建文件。
那么如何告诉FileWriter保存文件的位置以及保存位置?如果文件名已经存在,FileWriter是否删除现有文件并创建一个具有相同名称的新文件,如FileOutput中的“MODE_PRIVATE”-Mode? p>
我知道我可以使用FileOutput / InputStream将文件保存在内部存储中,但FileOutput只接受字节(这对于.getBytes() - 方法没有问题),但是我找不到转换的方法当我想要读取它们时,字节回到字符串。
(我为任何语法错误道歉,因为英语不是我的母语)
更新:
首先非常感谢帮助到目前为止。 但我仍需要一些具体的帮助。多数民众赞成我想要做的事情:每次我的游戏结束时,我都会切换到积分活动并给他达到的积分。在点活动中,我将点放入List并将此列表写入内部存储器中的文件。在Highscores-Activity中,我想读取此文件并将文件的内容放在List中,以便使用ListView在屏幕上打印它。 这是编写文件的代码:
ArrayList<Integer> highscoreListe = new ArrayList<Integer>();
punkte = getIntent().getExtras().getInt("Punkte");
public void writeToExternalStoragePublic() throws IOException
{
String filename = "highscores.txt";
FileOutputStream fos= null;
OutputStreamWriter osw = null;
fos= openFileOutput(filename,Context.MODE_PRIVATE);
osw = new OutputStreamWriter(fos);
for(Integer score : highscoreListe)
{
osw.write(score);
osw.append(System.getProperty("line.separator"));
}
osw.close();
fos.close();
}
我在stackoverflow上读了很多关于这个的问题,但我还是不知道如何读取这个文件,为文件中的每一行添加一个新的字符串或int到列表中。我希望你明白我想做什么。
答案 0 :(得分:0)
请参阅此链接以编写文件
http://developer.android.com/guide/topics/data/data-storage.html#pref
Writing to text file in "APPEND mode" in emulator-mode,
does the FileWriter deletes an existing file and creates a new file with the same name if the filename already exists
是的,但请考虑
public FileWriter(File file,
boolean append)
append - if true, then bytes will be written to the end of the file rather than the beginning
你想让你的文件私密写入内部存储。