2016-03-19 12 views
0

本当に2つの部分に詰まっています。 A)RUNNING JAR FILEのディレクトリを探し、同じディレクトリに "credits.txt"というファイルがあるかどうかを確認するプログラムが必要です。 B)そうでなければ、同じディレクトリにファイルを作成します。Java - .jarが存在しない場合は、.jarと同じディレクトリにファイルを作成してください。

主な問題は、私のファイルのパスを取得できません。

実行中のjarファイルが "Server"というフォルダにあったとすると、プログラムは文字列に "Server"という名前を保存し、その文字列にファイルが存在するかどうかを確認します。そうであれば、何もしないでください。それ以外の場合はファイルを作成してください。あなたはBukkitプラグインを作っている場合は

@Override 
public void onEnable(){ 
    getLogger().info(ChatColor.GREEN + "Credits has been enabled!"); 
    File file = new File("Credits.txt"); 

    //HERE I NEED THE PROGRAM TO CHECK WHAT DIRECTORY THE RUNNING JAR FILE IS FROM 
    if (file.exists(//IN THE SAME DIRECTORY AS THE RUNNING JAR FILE)){ 
     getLogger().info(ChatColor.DARK_GREEN + "Credits File Exists"); 

    }else{ 
     getLogger().info(ChatColor.DARK_RED + "Credits File Doesn't Exist!"); 
     //HERE IT NEEDS TO CREATE THE FILE IN THE SAME DIRECTORY OF THE JAR FILE "credits.txt" 

    } 
+4

あなたの難しさは何ですか?現在の作業ディレクトリ(フルパスのないファイルを探す場所)は、必ずしも 'jar'ファイルがある場所ではないことに注意してください。 – RealSkeptic

+1

いいえ、それは "単純なこと"ではなく、実際にはJavaがこれをやめないようにしているようです。私はJarディレクトリを見つける方法の詳細を覚えていませんが、いくつかの歪曲が含まれています。私はいくつかの "セキュリティ"タイプのクラスやメソッドを使う必要性を覚えているようです。 jarファイルへのパスを検索して詳細を取得します。 –

+1

ああ、[ここにあります](http://stackoverflow.com/questions/2837263/how-do-i-get-the-directory-that-the-currently-executing-jar-file-is-in)。 「セキュリティ」ではなく「保護された」。 –

答えて

1

、あなたはあなたのメインクラスでgetDataFolder()を使用することができます。次に、存在するかどうかを確認し、存在しない場合は作成することができます。設定を保存するためにそれを作成したい場合

public void onEnable(){ 
    getLogger().info(ChatColor.GREEN + "Credits has been enabled!"); 

    File pluginDirectory = getDataFolder(); //getting the data folder 
    if(!pluginDirectory.exists()){ 
     pluginDirectory.mkdir(); //Creating the plugin data folder if it doesn't exist. 
    } 

    File file = new File(pluginDirectory+File.seperator+"Credits.txt"); //Credits.txt inside the plugin directory 

    if (file.exists()){ //Checking if Credits.txt exists 
     getLogger().info(ChatColor.DARK_GREEN + "Credits File Exists"); 

    }else{ 
     getLogger().info(ChatColor.DARK_RED + "Credits File Doesn't Exist!"); 

     file.createNewFile(); //You probably need to create it too 
    } 
} 

getConfig()を使用しての代わりに、ファイルを自分で作成することを検討してください。はるかに簡単です。

+0

ありがとう! –

+0

ありがとうございます、今、サーバーの起動時と再ロード時にフォルダが作成されていますが、これは素晴らしいですが、このフォルダは常にですサーバーの起動時に上書きされ、毎回新しいフォルダが作成されます –

+0

基本的に、この行はif(!pluginDirectory.exists())が常に真であるため、新しいフォルダが毎回作成されるようです...そして、ファイルが存在しません " –

関連する問題