Java 我想从数组中找到一个值

Java 我想从数组中找到一个值,java,arrays,Java,Arrays,以下是我的java代码: import java.io.File; import java.util.Arrays; public class mainClass { public static void main(String... args) { File[] files = new File("%appdata%").listFiles(); showFiles(files); System.out.println( Arra

以下是我的java代码:

import java.io.File;
import java.util.Arrays;



public class mainClass {

    public static void main(String... args) {
        File[] files = new File("%appdata%").listFiles();
        showFiles(files);
        System.out.println( Arrays.toString( files ) );
        if (Arrays.asList(files).contains(".minecraft")) {
            System.out.println("Success!");
        }
    }

    public static void showFiles(File[] files) {
    }

}
我需要上面的代码来检查%appdata%中是否存在.minecraft文件夹。我对Java完全不感兴趣。我曾经使用过PHP,但似乎对我没有帮助:)请帮帮我,这让我很恼火


-Simon

如果您只想查找“.minecraft”文件,则更容易:

File appdata = new File("%appdata%");
File minecraft = new File(appdata, ".minecraft");
if (minecraft.exists()) {
    System.out.println("Success");
}

编辑:根据评论,(我主要是linux爱好者),您需要使用正确的
%APPDATA%
位置:

问题在于
.minecraft
是一个隐藏文件夹。您需要按如下方式访问文件夹:

File directory = new File("%appdata%");    
File[] hiddenFiles = directory.listFiles((FileFilter) HiddenFileFilter.HIDDEN);
for (File hiddenFile: hiddenFiles) {
    System.out.println("hidden file: " + hiddenFile.getCanonicalPath());
}

正如rolfl提到的,有一种更好的方法来查找单个文件

也就是说,您的代码没有执行正确的检查。您正在创建
文件
对象的数组,将数组转换为
列表
,然后检查列表中的
字符串
值。
字符串
值永远不会与
文件
对象匹配

如果您想查找单个文件,请使用rolfl的答案。如果您想专门修复代码,请从以下几点开始:

  • 您需要遍历文件列表。通过转换为
    列表
    ,您获得了什么
  • 您需要找到将
    文件的
    名称与
    字符串
    名称匹配的方法。您可以调用
    文件
    对象的什么方法来获取其名称
  • 您需要对
    文件的
    名称和
    “.minecraft”
    进行
    字符串比较。这种比较可能是什么样的

请注意:参考L.Butz答案;我没有访问Java中的隐藏文件,因此可能需要额外的步骤才能访问这些文件。

%appdata%
是一个环境变量,因此它不会被自动解析。因此,您需要在列出它之前解决它。这是通过使用


从教程开始。请不要给那个些到目前为止已经展示了他所做的事情的人投反对票。这是我的新代码:
public class mainClass{File appdata=new File(System.getenv(“appdata”);File minecraft=new File(appdata,.minecraft”);if(minecraft.exists(){System.out.println(“Success”);}
但它给了我这个错误:*错误:在类mainClass中找不到Main方法,请将Main方法定义为:public static void Main(字符串[]args)**
@Test
public void dirExistsInAppData() {
    Assert.assertTrue(dirExistsInAppData(".minecraft"));
}

private boolean dirExistsInAppData(final String dirname) {
    File dir = new File(System.getenv("APPDATA"), dirname);
    return dir.exists() && dir.isDirectory();
}