3

音声録音アプリがあり、特定の名前の録音ファイルが既に存在するかどうかを確認する機能を実装しようとしています。ユーザーが既に存在するファイル名を入力すると、警告ダイアログが表示されます。

すべてのファイル名は、デバイス上の .txt ファイルに保存されます。

私の現在のコード:

try {
    BufferedReader br = new BufferedReader(new FileReader(txtFilePath));
    String line = null;

    while ((line = br.readLine()) != null) {
        if (line.equals(input.getText().toString())) {
            nameAlreadyExists();
        }
    }
    br.close();
} catch (FileNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
} catch (IOException ex) {
    ex.printStackTrace();
}

newFileName = input.getText();

from = new File(appDirectory, beforeRename);
to = new File(appDirectory, newFileName + ".mp3");
from.renameTo(to);
writeToFile(input);
toast.show();

このコードは途中までしか機能しません。ファイル名が既に存在するかどうかを正常にチェックします。ファイル名がまだ存在しない場合は、正常に機能します。ただし、ファイル名が既に存在する場合、ユーザーは「nameAlreadyExists()」警告ダイアログを受け取りますが、ファイルは引き続き追加および上書きされます。コードを「nameAlreadyExists()」で停止するにはどうすればよいですか?

次のコードで問題を解決しました。

File newFile = new File(appDirectory, input.getText().toString() + ".mp3");
if (newFile.exists())
            {
                nameAlreadyExists();
            }
            else
            {
                newFileName = input.getText();

                from = new File (appDirectory, beforeRename);
                to = new File (appDirectory, newFileName + ".mp3");
                from.renameTo(to);
                writeToFile(input);
                toast.show();
            }
4

4 に答える 4

18

このFileクラスは、ファイルが存在するかどうかを返すexists()メソッドを提供します。true

File f = new File(newFileName);
if(f.exists()) { /* show alert */ }
于 2013-08-29T13:08:38.107 に答える