如何检查文件名是否已存在?

时间:2013-08-29 13:06:39

标签: java android

我有一个录音应用程序,我正在尝试实现一项功能,检查具有特定名称的录制文件是否已存在。如果用户键入已存在的文件名,则应显示警告对话框。

所有文件名都存储在设备上的.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 个答案:

答案 0 :(得分:12)

File类提供exists()方法,如果文件存在,则返回true

File f = new File(newFileName);
if(f.exists()) { /* show alert */ }

答案 1 :(得分:0)

您可以轻松编写return;以从函数中退出(如果这是函数)。或者使用

if(f.exists() /* f is a File object */ ) /* That is a bool, returns true if file exists */

语句,检查文件是否存在然后更正。

答案 2 :(得分:0)

以下是我用来完成任务的代码,

File mediaStorageDir = new File(
                    Environment
                            .getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES),
                    "My_Folder");

            if (!mediaStorageDir.exists()) {
                if (!mediaStorageDir.mkdirs()) {
                    Log.d("My_Folder", "failed to create directory");
                    return null;
                }
            }

答案 3 :(得分:0)

我认为你错过了一些标志来分解你的代码,以防文件存在:

    boolean  fileExists = false;
    try {

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

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

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

并随意使用File的exists()函数,如上所述....