2013-10-30 50 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(); 
} 
相關問題