2016-07-25 3 views
0

Я новичок в android и в настоящее время пытаюсь сэкономить несколько файлов в небольшом «игровом приложении», которое я делаю, чтобы узнать, однако файлы, похоже, сохраняются до тех пор, пока приложение закрывается. Когда я запускаю:Внутренние файлы Android исчезают после перезапуска приложения

file.exists() 
file.isFile() 

или любые аналогичные методы, они всегда возвращают false, когда приложение перезапускается.

Это метод, который я нашел в Интернете, чтобы сохранить файлы:

public void writeToFile(String data, String filePath, Context context){ 
    File file = new File(context.getFilesDir(), filePath); 

    if(!file.exists()){ 
     try{ 
      file.createNewFile(); 
     }catch(IOException e) { 
      e.printStackTrace(); 
      Log.e("Exception", "File couldn't be created"); 
     } 
    } 

    try { 
     OutputStreamWriter outputStreamWriter = new OutputStreamWriter(context.openFileOutput(filePath, Context.MODE_PRIVATE)); 
     outputStreamWriter.write(data); 
     outputStreamWriter.close(); 
    } 
    catch (IOException e) { 
     Log.e("Exception", "File write failed: " + e.toString()); 
    } 
} 

Я много прибегая к помощи пытается найти решение, но ни один из них не работал. Он работает, когда приложение работает, так как я могу писать и читать файлы, однако при перезагрузке приложения он не может найти файлы. (file.exists() возвращает false)

+1

У вас есть права на чтение и запись внешних хранилищ в манифесте? – Ben

+0

Вы, конечно, также можете показать, как вы проверяете, нет ли файлов после перезагрузки. – greenapps

+0

'file.createNewFile();'. Удалите это утверждение. Это вздор. OpenFileOutput создаст файл. – greenapps

ответ

0

Я предполагаю, что вы пытаетесь записать на внутреннее хранилище здесь? Если нет, и вы хотите получить доступ к внешнему хранилищу, я бы предложил ознакомиться с руководством на Android.com ниже.

https://developer.android.com/guide/topics/data/data-storage.html#filesInternal

Если является встроенной памяти, которую вы пытаетесь писать, то вам необходимо убедиться, что вы передаете правильный контекст метода. Например, если вы выполняли свой класс MainActivity и этот метод содержался в этом классе, ваш вызов был бы следующим:

writeToFile («Некоторые данные», «aFile.txt», MainActivity. это)

Смежные вопросы