2015-03-08 2 views
0

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

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

public class setPin extends ActionBarActivity { 


private final static String STORETEXT = "storetext.txt"; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_set_pin); 

} 

public void buttonClick(View v) { 
    EditText txtEditor=(EditText)findViewById(R.id.editText); 
    try { 
     FileOutputStream fos = openFileOutput(STORETEXT,   Context.MODE_PRIVATE); 
     Writer out = new OutputStreamWriter(fos); 
     out.write(txtEditor.getText().toString()); 
     txtEditor.setText(""); 
     fos.close(); 

     Toast.makeText(this, "Saved password", Toast.LENGTH_LONG).show(); 
     } 

    catch (Throwable t) { 
     Toast.makeText(this, "Exception: " + t.toString(), Toast.LENGTH_LONG).show(); 
     } 

//HERE I TRY TO PRINT THE SAVED STRING INTO THE TEXTFIELD 

    try { 
     BufferedReader inputReader = new BufferedReader(new InputStreamReader(
       openFileInput(STORETEXT))); 
     String inputString; 
     StringBuffer stringBuffer = new StringBuffer(); 
     while ((inputString = inputReader.readLine()) != null) { 
      stringBuffer.append(inputString + "\n"); 
     } 
     txtEditor.setText(stringBuffer.toString()); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 

ответ

0

Попробуйте что-нибудь в этом роде.

public void buttonClick(View v) { 
    EditText txtEditor = (EditText) findViewById(R.id.editText); 
    try { 
     FileOutputStream fos = openFileOutput(STORETEXT, Context.MODE_PRIVATE); 
     fos.write(txtEditor.getText().toString().getBytes()); 
     txtEditor.setText(""); 
     fos.close(); 

     Toast.makeText(this, "Saved password", Toast.LENGTH_LONG).show(); 
    } 

    catch (Throwable t) { 
     Toast.makeText(this, "Exception: " + t.toString(), Toast.LENGTH_LONG).show(); 
    } 

    String contents = ""; 
    try { 
     FileInputStream fin = openFileInput(STORETEXT); 
     int i; 
     while ((i = fin.read()) != -1) { 
      contents = contents + Character.toString((char) i); 
     } 
    } 
    catch (IOException e) { 
    } 
    txtEditor.setText(contents); 
} 
+0

Линия fos.write (txtEditor.getText(). ToString()); не может решить метод 'write (java.lang.String). – user3343264

+0

Woops. Проверить обновленный файл на самом деле занимает байт [] –

+0

Теперь он отображается в текстовом поле, так что похоже, что он работает, спасибо большое – user3343264