我试图查看这些文本文件中有多少存在,但即使有它们,程序也总是说numFiles = 0.我将文件放在src文件夹中名为Levels的文件夹中。感谢
int numFiles = 0;
for(int i = 0; i < 24; i++){
File file = new File("/Levels/level" + (i+1) + ".txt");
if(file.exists()){
numFiles++;
}
}
System.out.println(numFiles);
答案 0 :(得分:0)
您的路径不正确 - 如果您指的是绝对位置,则以/.
开头此外,如果您使用的是编辑器,请记住您的Java文件是在src中,但是您没有运行Java文件,您运行类文件,类文件可能在您的bin / build目录中最有可能 - 检查文本文件在build或bin目录中。
答案 1 :(得分:0)
您的路径不正确,如果您指的是本地文件(例如项目文件夹中的内容),请使用
File file = new File("Levels/level" + (i+1) + ".txt");
您在名称前面使用的斜杠使其看起来位于驱动器的根目录中,而不是本地目录。
答案 2 :(得分:0)
<强>被修改强>
我忽略了DirectoryStream
不支持count()
您可以使用绝对路径并使用Stream API和lambdas。像这样:
String dirString = "..." //absolute Path
Path dir = Paths.get(dirString);
int numFiles = dir.getNameCount();
System.out.println(numFiles);
一个优点是,只要文件保留在同一目录中,您就可以随意重命名文件。如果您只想使用特定文件,可以使用filter(),如下所示:
Files.newDirectoryStream(dir).filter(Predicate);
或在创建DirectoryStream
时直接添加过滤器,如下所示:
Files.newDirectoryStream(dir, RegEx);
要对每个文件执行某些操作,您可以使用使用者forEach()或查看Stream JavaDoc以获取其他使用者/中间操作。另请仔细检查DirectoryStream
是否支持您要使用的Stream
操作。