2013-10-30 51 views
1

这里是我的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的总数是N00B。我曾与PHP合作,但似乎没有帮助我:)请帮助,它让我很烦恼。

-Simon

+0

开始[基本I/O](http://docs.oracle.com/javase/tutorial/essential/io/)教程进行。 –

+4

请不要对已经显示他到目前为止所做的事情的人给予反对票。 – Jayesh

回答

2

如果你有兴趣在寻找只有“.minecraft”文件,它会更容易:

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

编辑:根据评论,(我一个Linux人居多),你需要使用正确的%APPDATA%位置:How do I get the value of Windows' %APPDATA% location variable in Java?

+0

不为我工作:( – AwesomeGuy

+0

与更新编辑 – rolfl

+0

这是我的新代码:'公共类mainClass { \t文件APPDATA =新的文件(System.getenv( “APPDATA”)); \t文件的Minecraft =新。文件(appdata,“.minecraft”); \t if(minecraft。存在()){ \t System.out.println(“Success”); '但是它给了我这个错误:**错误:在类mainClass中找不到主要方法,请定义主要方法为: public static void main(String [] args) ** – AwesomeGuy

1

的问题是,.minecraft隐藏文件夹。你需要像这样访问文件夹:

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

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

也就是说,你的代码没有执行正确的检查。您正在创建一个File对象数组,将该数组转换为List,然后检查列表中的String值。 String值永远不会匹配File对象。

如果您想查找单个文件,请使用rolfl的答案。如果你想专门解决你的代码,这里有一些东西让你开始:

  • 你需要迭代文件列表。你通过转换为List获得了什么?
  • 您需要找到一种方法将File's名称与String名称进行匹配。你可以通过什么方法调用File对象来获得它的名字?
  • 您需要对File's名称与".minecraft"之间的String进行比较。比较看起来像什么?

请注意:参考L.Butz答案以及;我还没有访问Java中的隐藏文件,所以有可能需要额外的步骤来访问它们。

0

%appdata%是一个环境变量,因此它不会自动通过File解决。所以你需要在列出之前解决它。这是使用System#getenv

@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(); 
} 
相关问题