HI, 我几乎已经解决了这个问题但现在已经卡住了!我需要做的是查看一个文件夹说..
String path = C://;
然后我需要一个循环来查看该文件夹中有多少文件说10.我需要查找类似
的文件LAYER.EXE-******.pf
*****
可以根据其他内容进行更改,但这并不重要,确保在找到启动LAYER.EXE的文件时将其标记出来。以下是我一直在努力的事情,我会非常感谢你的帮助,并提前感谢你! :)
String path = "C://";
String files;
File folder = new File(path);
File[] listOfFiles = folder.listFiles();
for (int i = 0; i < listOfFiles.length; i++){
if (listOfFiles[i].isFile()){
files = listOfFiles[i].getName();
System.out.println(files);
if (files == "LAYER.EXE.pf"){
System.out.println("found =================");
}
}
}
答案 0 :(得分:6)
files == "LAYER.EXE.pf"
更改为
"LAYER.EXE.pf".equals(files)
你所做的是参考比较,你需要平等。阅读更多here。
告诉你更多,这只会给你名字等于“LAYER.EXE.pf”的文件。
尝试files.startsWith("LAYER.");
答案 1 :(得分:3)
您可以使用FileNameFilter
public void listFiles() {
File f = new File("C:/");
String[] allFiles = f.list(new MyFilter ());
for (String filez:allFiles ) {
System.out.println(filez);
}
}
class MyFilter implements FilenameFilter {
@Override
public boolean accept(final File dir, final String name) {
return name.startsWith("LAYER.EXE.pf");
}
}
答案 2 :(得分:1)
如果您需要过滤文件名,请考虑使用文件名过滤器:
File[] files = directory.listFiles(new FilenameFilter() {
public boolean accept(File dir, String fileName) {
return fileName.startsWith("LAYER.EXE-") && fileName.endsWith(".pf");
}
});
此过滤器基于您的要求,而不是您当前的实施。
files
数组现在只包含File
个对象,其过滤器接受文件名,换句话说,匹配“模式”的文件LAYER.EXE-****.pf
答案 3 :(得分:0)
如果您需要以LAYER.EXE
开头的文件,那么最好更改一下:
if (files == "LAYER.EXE.pf")
分为:
if (files.startsWith("LAYER.EXE.pf"))
请记住,Java中字符串的==
运算符不会像您期望的那样运行。改为使用equals
或equalsIgnoreCase
方法!
答案 4 :(得分:0)
要检查字符串与另一个字符串,不应使用“==”,而应使用equals方法,否则您将比较对象的引用而不是表达式。 您还可以通过对listOfFiles进行迭代来使用更好的循环。 这是更正后的代码:
String path = "C://";
String files;
File folder = new File(path);
File[] listOfFiles = folder.listFiles();
for (File checkedFile : listOfFiles){
if (checkedFile.isFile()){
files = checkedFile.getName();
System.out.println(files);
if (files.equals("LAYER.EXE.pf")){
System.out.println("found =================");
}
}
}
答案 5 :(得分:0)
您希望使用其中一个字符串比较来比较文件名,可能是files.startsWith("LAYER.EXE.pf")
。 equals()
(在这种情况下)只有在两个对象是同一个实例时才返回true。
答案 6 :(得分:0)
首先,对于Java中的字符串比较,您需要执行.equals()
而不是==
,因为==
实际上只有在字符串是同一个对象时才会计算为true,而是比较字符串本身的值。
那就是
if(files.equal("LAYER.EXE.pf"))"
其次,您应该使用.startsWith()
函数来检查字符串的第一个字符是否与另一个字符串匹配
所以,就这么做
if(files.startsWith("LAYER.EXE"))
你应该没问题
答案 7 :(得分:0)
您可以使用FileFilter仅获取符合您的名称模式的文件。像这样:
String path = "C://";
File folder = new File(path);
File[] listOfFiles = folder.listFiles(new FileFilter(){
public boolean accept(File f){
return (f.startsWith("LAYER.EXE"));
}
});
在那里你将拥有一个包含你需要的所有文件的数组,只有它们。接下来,您可以测试数组是否无效以及是否处理文件。