-4

edittext の内容を 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

2 に答える 2

0

方法を提案できます.. onclick() ポップアップで、このリンクのような編集テキストを含むカスタムアラートダイアログを表示し、ユーザーに名前を入力して、この名前をファイル名として使用するように依頼しますFile myFile = new File("/sdcard/"+myfilename+".txt");

于 2012-10-15T11:00:13.533 に答える
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();

}

于 2012-10-15T11:00:49.810 に答える