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 で作業しましたが、役に立たないようです :) 助けてください、それは私を悩ませます。

-サイモン

4

4 に答える 4

2

「.minecraft」ファイルだけを見つけたい場合は、次の方法がはるかに簡単です。

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

編集:コメントに基づいて(そして私は主にLinuxの男です)、正しい%APPDATA%場所を使用する必要があります:JavaでWindowsの %APPDATA% ロケーション変数の値を取得するにはどうすればよいですか?

于 2013-10-30T18:14:54.750 に答える
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());
}
于 2013-10-30T18:15:00.810 に答える
0

rolfl が述べたように、単一のファイルを探すためのより良い方法があります。

つまり、コードは適切なチェックを実行していません。オブジェクトの配列を作成し、配列をFileに変換してからList、リストのString値をチェックしています。String値がオブジェクトと一致することはありませんFile

単一のファイルを見つけたい場合は、rolfl の回答を使用してください。コードを具体的に修正したい場合は、次のことから始めてください。

  • ファイルのリストを反復処理する必要があります。に変換することで何が得られますListか?
  • File's名前と名前を一致させる方法を見つける必要がありますStringFileオブジェクトの名前を取得するには、どのメソッドを呼び出すことができますか?
  • 名前と をString比較する必要があります。その比較はどのように見えるでしょうか?File's".minecraft"

注意: L.Butz の回答も参照してください。私は Java で隠しファイルにアクセスしたことがないので、隠しファイルにアクセスするために追加の手順が必要になる可能性があります。

于 2013-10-30T18:19:33.017 に答える