FileWriter: Как установить папку назначения?

Я разрабатываю небольшую игру на данный момент (Android-приложение) и хочу сохранить свои рекорды в .txt-файл, потому что, если бы я сохранял их только в списке, список был бы пуст каждый раз, когда я запускаю приложение новый. Для java-программ вообще для меня это не проблема, потому что FileWriter создает .txt в папке программы. Если я сделаю это в Android, я получаю (конечно) ошибку, что он не может создать файл.

Итак, как мне указать FileWriter, где сохранить файл и где я должен его сохранить? Удаляет ли FileWriter существующий файл и создает новый файл с тем же именем, если имя файла уже существует, например режим «MODE_PRIVATE» из FileOutput?

Я знаю, что мог бы использовать FileOutput/InputStream для сохранения файла во внутреннем хранилище, но FileOutput просто принимает байты (что не проблема с методом .getBytes()), но я не могу найти способ преобразовать байты обратно в строки, когда я хочу их прочитать.

(Прошу прощения за любые грамматические ошибки, так как английский не мой родной язык)

ОБНОВЛЕНИЕ:

Сначала большое спасибо за помощь до сих пор. Но мне все еще нужна конкретная помощь. Вот что я хочу сделать: каждый раз, когда моя игра заканчивается, я переключаюсь на действие «Очки» и даю ему набранные очки. В очках-активности я помещаю очки в список и записываю этот список в файл во внутреннюю память. В Highscores-Activity я хочу прочитать этот файл и поместить содержимое файла в список, чтобы распечатать его на экране с помощью 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 в список. Надеюсь, вы понимаете, что я хочу сделать.


person Marcel    schedule 14.06.2012    source источник


Ответы (1)


Пожалуйста, перейдите по этой ссылке, чтобы записать файл

http://developer.android.com/guide/topics/data/data-storage.html#pref

Запись в текстовый файл в режиме APPEND в режиме эмулятора,

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 

Если вы хотите сделать свой файл приватным, записывайте его во внутреннюю память.

person Dheeresh Singh    schedule 14.06.2012
comment
Хорошо, я думаю, что не понял всей идеи, стоящей за этим. Я имею в виду, что SharedMedia не кажется тем, что мне нужно, потому что вы не можете поместить в него список целых чисел (только примитивные типы и набор строк). FileOutputStream просто принимает байты, верно? Итак, у меня есть файл, заполненный байтами. Как преобразовать эти байты обратно в строки, когда я хочу прочитать файл в другом действии и сохранить содержимое в список целых чисел? - person Marcel; 14.06.2012
comment
не совсем уверен, что вы ищете? так как вы можете читать данные из while и можете преобразовать их в строку и проанализировать их в int stackoverflow.com/questions/2902689/ - person Dheeresh Singh; 16.06.2012
comment
google.co.in/ - person Dheeresh Singh; 16.06.2012
comment
Спасибо, чувак, это действительно помогло мне лучше понять эту тему, но у меня все еще есть проблема с чтением. Я поставил обновление на свой вопрос, может быть, вы знаете, что делать. - person Marcel; 16.06.2012