不带文件扩展名的Java文件实例
我试图在不知道文件扩展名的情况下获取文件实例。我尝试了另一种解决方案:不带文件扩展名的Java文件实例,java,file,directory,Java,File,Directory,我试图在不知道文件扩展名的情况下获取文件实例。我尝试了另一种解决方案: String extension = null; String[] myFiles = dir.list(new FilenameFilter() { public boolean accept(File directory, String fileName) { if(fileName.lastIndexOf(".")==-1) return false; if((fileName.
String extension = null;
String[] myFiles = dir.list(new FilenameFilter() {
public boolean accept(File directory, String fileName) {
if(fileName.lastIndexOf(".")==-1) return false;
if((fileName.substring(0, fileName.lastIndexOf("."))).equals(storageId))
extension = fileName.substring(fileName.lastIndexOf("."), fileName.length());
}
});
但是它不起作用,我不能影响扩展名变量,我该如何处理它才能获取文件的扩展名
非常感谢您遇到了这样一个问题:匿名内部类的方法无法修改包含作用域的类中的局部变量。Java语言不允许这样做。只能引用最终的局部变量。在Java8中,它不必声明为final。它只需要在匿名类被实例化时有效地成为final 有很多方法可以解决这个问题,例如:
// #1
final String[] extension = new String[1];
String[] myFiles = dir.list(new FilenameFilter() {
public boolean accept(File directory, String fileName) {
...
extension[0] = ...
}
});
// #2
final MyCustomStringHolder extension = ...
String[] myFiles = dir.list(new FilenameFilter() {
public boolean accept(File directory, String fileName) {
...
extension.setValue(...);
}
});
// #3
private String extension = null;
public void method() {
String[] myFiles = dir.list(new FilenameFilter() {
public boolean accept(File directory, String fileName) {
...
extension = ...
}
});
如果在accept方法中,则在第二个if中返回true。然后循环返回字符串[],以获取每个文件名的扩展名。