FileWriter:如何设置目标文件夹?

时间:2012-06-14 06:35:21

标签: java android filewriter

我正在Moment(Android-App)开发一个小游戏,我想将我的Highscores保存到.txt文件中,因为如果我将它保存在列表中,那么每次我都会将列表清空启动App new。 对于java程序,一般来说这对我来说不是问题,因为FileWriter在程序文件夹中创建了一个.txt。 如果我在Android中这样做,我得到(当然)错误,他无法创建文件。

那么如何告诉FileWriter保存文件的位置以及保存位置?如果文件名已经存在,FileWriter是否删除现有文件并创建一个具有相同名称的新文件,如FileOutput中的“MODE_PRIVATE”-Mode?

我知道我可以使用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到列表中。我希望你明白我想做什么。

1 个答案:

答案 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 

你想让你的文件私密写入内部存储。