2012-10-15 31 views
-4

我試圖編寫代碼將edittext的內容保存到SD卡中的文件中。我發現下面的代碼是有效的:將文件存儲在SD卡中,用戶名由用戶定義

public void onClick(View v) { 
    // write on SD card file data in the text box 
    try { 
     File myFile = new File("/sdcard/mysdfile.txt"); 
     myFile.createNewFile(); 
     FileOutputStream fOut = new FileOutputStream(myFile); 
     OutputStreamWriter myOutWriter = new OutputStreamWriter(fOut); 
     myOutWriter.append(write_text.getText()); 
     myOutWriter.close(); 
     fOut.close(); 
     Toast.makeText(getBaseContext(), 
       "Done writing SD 'mysdfile.txt'", 
       Toast.LENGTH_SHORT).show(); 
    } catch (Exception e) { 
     Toast.makeText(getBaseContext(), e.getMessage(), 
       Toast.LENGTH_SHORT).show(); 
    } 
}// onClick 
}); // btnWriteSDFile 

問題是,這總是將信息保存到同一個文件,覆蓋任何以前的保存。

如果給定的文件存在,如何提示用戶輸入文件的不同名稱並將其保存在用戶提供的名稱下?

請注意,我對此很新穎。

+4

認真對待的文件名,這是一個真正的壞的問題,我認爲。難道你不認爲你必須從edittext獲取值並追加到文件對象創建構造函數嗎? –

回答

0

我可以建議)的方式.. 在onclick(彈出與像in this link一個EditText的自定義警告對話框,要求用戶輸入姓名和File myFile = new File("/sdcard/"+myfilename+".txt");

0

首先使用這個名稱作爲文件名

從一個提示對話框

public void onClick(View v) { 
    // write on SD card file data in the text box 
    try { 

    AlertDialog.Builder alert = new AlertDialog.Builder(this.getApplicationContext()); 

    alert.setTitle("Title"); 
    alert.setMessage("Message"); 

    // Set an EditText view to get user input 
    final EditText input = new EditText(this.getApplicationContext()); 
    alert.setView(input); 

    alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() { 
    public void onClick(DialogInterface dialog, int whichButton) { 
     Editable value = input.getText(); 
     File myFile = new File("/sdcard/"+value .toString()); 
    myFile.createNewFile(); 
    FileOutputStream fOut = new FileOutputStream(myFile); 
    OutputStreamWriter myOutWriter = new OutputStreamWriter(fOut); 
    myOutWriter.append(write_text.getText()); 
    myOutWriter.close(); 
    fOut.close(); 
    Toast.makeText(getBaseContext(), 
      "Done writing SD 'mysdfile.txt'", 
      Toast.LENGTH_SHORT).show(); 

     } 
    }); 

    alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int whichButton) { 
     // Canceled. 
     } 
    }); 

    alert.show(); 

}

相關問題