2016-04-28 9 views
0
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_start); 

    Button mBtn1 = (Button) findViewById(R.id.start_Quit_button); 
    mBtn1.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      Log.i("clicks", "You Clicked B1"); 
      Intent i = new Intent(
        StartActivity.this, 
        MainActivity.class); 
      startActivity(i); 
     } 
    }); 
    Button mBtn2 = (Button) findViewById(R.id.start_Next_button); 
    mBtn2.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      Log.i("clicks", "You Clicked B2"); 
      TextView username = (TextView) findViewById(R.id.login_text); 

      File root = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/ExperimentLog"); 
      if (!root.exists()) { 
       root.mkdir(); 
      } 

      Username = username.getText().toString(); 


      save(root, Username); 

      Intent i = new Intent(
        StartActivity.this, 
        Test1_0.class); 
      startActivity(i); 
     } 
    }); 
} 

public void save(File dir, String string) { 
    try { 
     File filepath = new File(dir, Username + ".txt"); 
     FileWriter writer = new FileWriter(filepath); 
     writer.append(string); 
     writer.flush(); 
     writer.close(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 
} 

Das ist der Code, den ich habe. Wie Sie sehen können, möchte ich den zweiten Knopf, um zur nächsten Tätigkeit zu gehen und den Text zu speichern, den ich vom editText start_Next_button erhält. Und eine sichere Methode, um die Zeichenfolge in die erstellte Datei zu schreiben. Aber die, wenn ich die Taste auf der AVD drücken, zeigt Android Studio dies:Das Android Studio sagen mir immer wieder, dass die Datei nicht gefunden werden kann

04-28 10:09:44.242 2379-2379/com.android.mick.encodingaidingexperiment W/System.err: java.io.FileNotFoundException: /sdcard/ExperimentLog/Name.txt: open failed: ENOENT (No such file or directory) 
04-28 10:09:44.242 2379-2379/com.android.mick.encodingaidingexperiment W/System.err:  at libcore.io.IoBridge.open(IoBridge.java:452) 
04-28 10:09:44.242 2379-2379/com.android.mick.encodingaidingexperiment W/System.err:  at java.io.FileOutputStream.<init>(FileOutputStream.java:87) 
04-28 10:09:44.242 2379-2379/com.android.mick.encodingaidingexperiment W/System.err:  at java.io.FileOutputStream.<init>(FileOutputStream.java:72) 
04-28 10:09:44.242 2379-2379/com.android.mick.encodingaidingexperiment W/System.err:  at java.io.FileWriter.<init>(FileWriter.java:42) 
04-28 10:09:44.242 2379-2379/com.android.mick.encodingaidingexperiment W/System.err:  at com.android.mick.encodingaidingexperiment.StartActivity.save(StartActivity.java:74) 
04-28 10:09:44.242 2379-2379/com.android.mick.encodingaidingexperiment W/System.err:  at com.android.mick.encodingaidingexperiment.StartActivity$2.onClick(StartActivity.java:61) 
04-28 10:09:44.242 2379-2379/com.android.mick.encodingaidingexperiment W/System.err:  at android.view.View.performClick(View.java:5198) 
04-28 10:09:44.242 2379-2379/com.android.mick.encodingaidingexperiment W/System.err:  at android.view.View$PerformClick.run(View.java:21147) 
04-28 10:09:44.242 2379-2379/com.android.mick.encodingaidingexperiment W/System.err:  at android.os.Handler.handleCallback(Handler.java:739) 
04-28 10:09:44.242 2379-2379/com.android.mick.encodingaidingexperiment W/System.err:  at android.os.Handler.dispatchMessage(Handler.java:95) 
04-28 10:09:44.242 2379-2379/com.android.mick.encodingaidingexperiment W/System.err:  at android.os.Looper.loop(Looper.java:148) 
04-28 10:09:44.242 2379-2379/com.android.mick.encodingaidingexperiment W/System.err:  at android.app.ActivityThread.main(ActivityThread.java:5417) 
04-28 10:09:44.242 2379-2379/com.android.mick.encodingaidingexperiment W/System.err:  at java.lang.reflect.Method.invoke(Native Method) 
04-28 10:09:44.242 2379-2379/com.android.mick.encodingaidingexperiment W/System.err:  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
04-28 10:09:44.242 2379-2379/com.android.mick.encodingaidingexperiment W/System.err:  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
04-28 10:09:44.242 2379-2379/com.android.mick.encodingaidingexperiment W/System.err: Caused by: android.system.ErrnoException: open failed: ENOENT (No such file or directory) 
04-28 10:09:44.242 2379-2379/com.android.mick.encodingaidingexperiment W/System.err:  at libcore.io.Posix.open(Native Method) 
04-28 10:09:44.242 2379-2379/com.android.mick.encodingaidingexperiment W/System.err:  at libcore.io.BlockGuardOs.open(BlockGuardOs.java:186) 
04-28 10:09:44.242 2379-2379/com.android.mick.encodingaidingexperiment W/System.err:  at libcore.io.IoBridge.open(IoBridge.java:438) 
04-28 10:09:44.242 2379-2379/com.android.mick.encodingaidingexperiment W/System.err: ... 14 more 

BTW verwende ich AVD Galaxie Nexus Android 6.0

+0

hast du 'READ_EXTERNAL_STORAGE' und' WRITE_EXTERNAL_STORAGE' Erlaubnis hinzugefügt? –

+0

Mick

Antwort

0

zunächst die Ausnahme läuft über Datei ist nicht vorhanden, so Sie müssen diesen Ordner und diese Datei erstellen, wenn sie in Ihrem Verzeichnis nicht vorhanden sind. Sie benötigen einen try catch-Block, um FileNotFoundException zu behandeln. und Sie können auch Files.createFile(thePath); verwenden, um eine Datei zu erstellen, wenn sie nicht existiert.

+0

Sie müssen die meisten Ausnahmen von throwed ausschließen Mal hoffe ich, dass dir das hilft –

0

versuchen Sie einfach diesen

File root = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/ExperimentLog"+".txt"); 

statt

File root = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/ExperimentLog"); 
1

Versuchen Sie, eine / nach ExperimentLog und dann mkdir() oder mkdirs() hinzufügen.