Android 使用用户定义的名称将文件存储在sd卡中

Android 使用用户定义的名称将文件存储在sd卡中,android,filenames,sd-card,Android,Filenames,Sd Card,我正在尝试编写代码,将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 f

我正在尝试编写代码,将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
问题是,这总是将信息保存到同一个文件中,覆盖以前的任何保存

如果给定文件存在,我如何提示用户为该文件输入其他名称,并以用户提供的名称保存该文件

请注意,我对这一点还不太熟悉。

我可以提出一种方法。。 在onclick()弹出窗口中,将显示一个自定义警报对话框,该对话框带有类似edittext的文本,并要求用户输入名称,并将此名称用作
file myFile=new file(“/sdcard/”+myfilename+”.txt”)中的文件名

首先

从提示对话框中获取文件名

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();

}

说真的,我认为这是一个很糟糕的问题。难道你不能认为你必须从edittext中获取值并附加到文件对象创建构造函数中吗?