我正在搜索文件夹中的声音文件,并想知道声音文件是否存在,可能是.mp3,.mp4等.我只是想确保文件名(没有扩展名)存在.
例如,文件搜索/家庭/用户/桌面/声音/ a
如果存在任何a.mp3或a.mp4或a.txt等,则返回.
我试过这个:
File f=new File(fileLocationWithExtension);
if(f.exist())
return true;
else return false;
Run Code Online (Sandbox Code Playgroud)
但在这里我必须通过扩展,否则它总是返回false
对于任何来到这里的人来说,这是我想出的最佳方式
public static void main(String[] args) {
File directory=new File(your directory location);//here /home/user/desktop/sound/
final String name=yourFileName; //here a;
String[] myFiles = directory.list(new FilenameFilter() {
public boolean accept(File directory, String fileName) {
if(fileName.lastIndexOf(".")==-1) return false;
if((fileName.substring(0, fileName.lastIndexOf("."))).equals(name))
return true;
else return false;
}
});
if(myFiles.length()>0)
System.Out.println("the file Exist");
}
Run Code Online (Sandbox Code Playgroud)
缺点:即使找到了我从未在我的问题中打算过的文件,它仍将继续搜索.欢迎提出任何建议
这段代码可以解决问题..
public static void listFiles() {
File f = new File("C:/"); // use here your file directory path
String[] allFiles = f.list(new MyFilter ());
for (String filez:allFiles ) {
System.out.println(filez);
}
}
}
class MyFilter implements FilenameFilter {
@Override
//return true if find a file named "a",change this name according to your file name
public boolean accept(final File dir, final String name) {
return ((name.startsWith("a") && name.endsWith(".jpg"))|(name.startsWith("a") && name.endsWith(".txt"))|(name.startsWith("a") && name.endsWith(".mp3")|(name.startsWith("a") && name.endsWith(".mp4"))));
}
}
Run Code Online (Sandbox Code Playgroud)
上面的代码将找到名称为a的文件列表.
我在这里使用了4个扩展来测试(.jpg,.mp3,.mp4,.txt).如果你需要更多,只需在boolean accept()方法中添加它们.
编辑:
这是OP想要的最简化版本.
public static void filelist()
{
File folder = new File("C:/");
File[] listOfFiles = folder.listFiles();
for (File file : listOfFiles)
{
if (file.isFile())
{
String[] filename = file.getName().split("\\.(?=[^\\.]+$)"); //split filename from it's extension
if(filename[0].equalsIgnoreCase("a")) //matching defined filename
System.out.println("File exist: "+filename[0]+"."+filename[1]); // match occures.Apply any condition what you need
}
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
File exist: a.jpg //These files are in my C drive
File exist: a.png
File exist: a.rtf
File exist: a.txt
File exist: a.mp3
File exist: a.mp4
Run Code Online (Sandbox Code Playgroud)
此代码检查路径的所有文件.它将从其扩展名中拆分所有文件名.最后,当与定义的文件名匹配时,它将打印该文件名.