2015-05-17 4 views
1

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

package com.example.storage; 

import java.io.FileInputStream; 
import java.io.FileOutputStream; 
import java.io.InputStreamReader; 

import android.app.Activity; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.EditText; 
import android.widget.Toast; 

public class MainActivity extends Activity { 

    private EditText et; 
    private EditText st; 
    private String data; 
    private String file; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     et = (EditText)(findViewById(R.id.editText1)); 
     st = (EditText)(findViewById(R.id.showText1)); 
    } 

    public void save(View view) { 
    data = et.getText().toString(); 
     file = st.getText().toString(); 
     try { 
      FileOutputStream fOut = openFileOutput(file,MODE_WORLD_READABLE); 
      fOut.write(data.getBytes()); 
      fOut.close(); 
      Toast.makeText(getBaseContext(), "file saved", 
        Toast.LENGTH_SHORT).show(); 
     } catch (Exception e){ 
      //TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 

    public void read(View view) { 
     file = st.getText().toString(); 
     try { 
      FileInputStream fin = openFileInput(file); 
      int c; 
      String temp = ""; 
      while((c = fin.read()) != -1) { 
       temp = temp + Character.toString((char)c); 
      } 
      et.setText(temp); 
      Toast.makeText(getBaseContext(),"file read", 
        Toast.LENGTH_SHORT).show(); 
     } catch(Exception e) { 

     } 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 
     if (id == R.id.action_settings) { 
      return true; 
     } 
     return super.onOptionsItemSelected(item); 
    } 
} 

Любая помощь очень ценится. Заранее спасибо.

ответ

0

Что касается использования FileWriter (Файл файла, boolean append) в режиме «append»? Посмотрите здесь: How to append to a text file in android?

Попробуйте так:

File f = new File(pathToUrFile); 
FileWriter fw = new FileWriter(file, true); 
fw.append(); 

Если вы собираетесь сохранить больше (и разные) значения дают gson попытку сохранить и загрузить вары или даже классы из текстовых файлов.

С уважением!

+0

Thx! будет исследовать его и попробовать. Я думаю, что было бы проще хранить массив внутри файла, хотя это возможно? или мне нужно вставить строку, а затем преобразовать ее в массив при вызове? – Charas

+0

Несомненно. Это возможно. Посмотрите здесь: http://stackoverflow.com/questions/17970128/how-to-convert-string-array-to-object-using-gson-json Но если вам нужно только сохранить некоторые строки, это может быть проще просто сохраните их в файле и разделите их на определенный символ. Тогда вам не нужно использовать внешнюю библиотеку и ее можно легко разделить на String.split ('char'). – H3ADLESS

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