我有一个录音应用程序,我正在尝试实现一项功能,检查具有特定名称的录制文件是否已存在。如果用户键入已存在的文件名,则应显示警告对话框。
所有文件名都存储在设备上的.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();
}
答案 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()函数,如上所述....