2015-04-09 2 views
0

Я пытаюсь использовать простой текстовый файл в качестве основы для хранения некоторых постоянных данных, и все решения, которые я видел онлайн, не работают для меня.Чтение и запись в текстовый файл android

Размещение текстового файла в пределах активов не позволяет выполнять манипуляции во время выполнения, но разрешает мне читать из файла.

Разрешение андроида, чтобы создать файл, показанный в следующем:

 OutputStream os = openFileOutput("Persistant.txt", MODE_WORLD_READABLE); 
     OutputStreamWriter osw = new OutputStreamWriter(os); 
     BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os)); 
     bw.write("data"); 
     bw.newLine(); 

Однако при попытке чтения из этого файла позже на следующем возвращается: /Persistant.txt: открыть не удалось: ENOENT (Нет такого файл или каталог)

 BufferedReader in 
       = new BufferedReader(new FileReader("Persistant.txt")); 

Благодаря

+0

Этот файл относится к папке с данными приложения, названной как пакет приложения – IshRoid

+0

, что противоположно «Output»? – Selvin

+2

http://developer.android.com/guide/topics/data/data-storage.html - У этой ссылки есть ваш ответ. – AndRSoid

ответ

1

используется метод openFileOutput() вашего контекста, чтобы создать файл в частном хранилище вашего приложения:

OutputStream os = openFileOutput("Persistant.txt", MODE_WORLD_READABLE); 

Таким образом, вы должны использовать метод openFileInput(), чтобы прочитать его:

BufferedReader in = new BufferedReader(
         new InputStreamReader(openFileInput("Persistant.txt"))); 

в противном случае, если вы действительно хотите использовать конструктор файла, сначала нужно получить имя папки:

BufferedReader in = new BufferedReader(
         new FileReader(new File(getFilesDir(),"Persistant.txt"))); 

Если вы этого не сделаете, вы попытаетесь открыть файл из текущего рабочего каталога вашей программы, который, скорее всего, является корневым каталогом устройства, а не местом хранения вашего файла, а не местом, где вам будет разрешено написать что-нибудь.

+0

Большое спасибо Крису! – kxdan

-2

вы объявили разрешение на чтение и запись на внешний накопитель в Manifest.xml ..? как,

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 
+1

№. Эти разрешения предназначены для внешнего хранилища, а не для внутреннего. –

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