2014-01-18 3 views
1

У меня есть программа для Android, которая создает файл и проверяет его в инструкции if. Целью этого является сохранение значений в приложении. Приложение работает так. Я поместил значения в телефон, и я сбросил приложение, чтобы сбросить его. Значения были сохранены в файле. Когда я снова открою приложение, он должен пропустить экран, который позволяет мне вводить значения. Когда я это делаю, приложение действует так, как будто файл никогда не существовал. После отладки я обнаружил, что файл действительно создан. Он должен был быть создан во внутреннем хранилище, но я также добавил, что на всякий случай добавлено разрешение на запись внешнего хранилища. Может ли кто-нибудь помочь мне или дать мне альтернативу, пожалуйста?Файл Android не существует (но в то же время!)

File file = new File("user.txt"); 
    if (file.exists()) 
    { 
     ... 
    } 
+0

Почему вы не используете базу данных SQLite для сохранения данных? –

+2

Используйте 'SharedPreference', если у вас нет большого количества' DATA' для сохранения. –

+0

В какой каталог вы сохраняете файлы? Как показано выше? – burntsugar

ответ

1
 File f = new File(); 

это просто создать файл экземпляр файла во время выполнения. Для создания файла вам необходимо использовать следующий код.

 File file = new File("data/data/your package name/test.txt"); 
     if (!file.exists()) { 
       try { 
        file.createNewFile(); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 
     } 
+3

use 'File file = new File (context.getFilesDir()," test.txt "); вместо этого. '/ data/data/...' может измениться в будущей версии Android. – zapl

+1

@zapl Большое вам спасибо! Это помогло! Если бы у меня хватило репутации, я бы дал вам право голоса. – alexsmbaratti

0

попытка дать ему полный путь не только имя файла, как этот

File mFile = new File("/sdcard/mysdfile.txt"); 
+0

Как «новый файл (Environment.getExternalStorageDirectory(),« mysdfile.txt »);' yes. – zapl

+0

Извините, это не сработало для меня. – alexsmbaratti

0

Папка активов считывается только во время выполнения.

От http://developer.android.com/guide/topics/data/data-storage.html#filesInternal

Совет: Если вы хотите сохранить статический файл в приложении во время компиляции, сохраните файл в проекте Реза/необработанном/каталоге. Вы можете открыть его с помощью openRawResource(), передав R.raw. идентификатор ресурса. Этот метод возвращает InputStream, который вы можете использовать для чтения файла (но вы не можете записать его в исходный файл).

Посмотрите на использование SharedPreferences для сохранения примитивных типов данных.

0
 Boolean isSDPresent = android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED); 

       File direct = new File(Environment.getExternalStorageDirectory() + "/Folder/Filename"); 
       if (!direct.exists()) { 
        direct.mkdir(); // directory is created; 
       } 
       if (isSDPresent) { 
        Path = Environment.getExternalStorageDirectory() + "/Folder/Filename"; 

       } else { 
        Path = getFilesDir() + "/Folder/Filename"; 
       } 
     File f = new File(Path); 
     if(!file.exists()) { 
     try { 
         file.createNewFile(); 
        } catch (IOException e) { 
         e.printStackTrace(); 
        } 
} 
Смежные вопросы