2016-10-25 3 views
0

私は少なくとも今一月以上この問題に取り組んできました。現在のユーザーをベースにしたJavaターゲティングディレクトリ

私が持っているのは、ディレクトリを指定して、ディレクトリが空であるかどうかを確認するコードです。そうでない場合は、その中のすべてのファイルを削除し、ディレクトリフォルダから抜けます。私は一時ファイルやごみ箱のようなものをきれいにするためにこれを使用しています。

私がやったやり方は、プライベートメソッドの中に "SRC_FOLDER"という変数を宣言しています。プライベートメソッドには、クリーニングしたいディレクトリの値が入っています。そして公の方法で、残りのコードを書きました。ここで

は完全なコードです:

import java.io.File; 
import java.io.IOException; 

public class test { 
private static final 
    String SRC_FOLDER = "C:\Users\Denisowator\AppData\Local\Temp"; 

public static void main(String[] args) { 
     File directory = new File(SRC_FOLDER); 

     //Check if directory exists 
     if(!directory.exists()) { 
      System.out.println("Directory does not exist."); 
      System.out.println("Skipping directory."); 
      System.exit(0); 
     } 
     else { 

      try { 
      delete(directory); 
      } 

      catch(IOException e){ 
       e.printStackTrace(); 
       System.exit(0); 
      } 
     } 

     System.out.println("Cleaned directory" + SRC_FOLDER + "."); 
    } 

    public static void delete(File file) 
     throws IOException{ 

     if(file.isDirectory()){ 

      //If directory is empty 
      if(file.list().length==0){ 
       System.out.println("Directory is empty") 
      } 
     } 
     else { 
      //If file exists, then delete it 
      file.delete(); 
      System.out.println("File is deleted : " + file.getAbsolutePath()); 
     } 
    } 
    } 

あなたが見ることができるように、変数は基本的に私が掃除したいフォルダでファイルの値として使用され、それは、ファイルの長さ(量をチェックしますその中のファイルの長さがゼロより大きい場合、ファイルは削除されます。

すべてうまく動作しますが、私が問題を抱えているのは、ユーザーがコードを実行することに基づいて、同じディレクトリを指定することです。

私はこのプログラムを誰かに与え、その名前は「スティーブ」なのかなと言いましょう。ユーザーフォルダの "Denisowator"というユーザーを探しているので、コードは機能しません。だから、私はどのようにユーザーのユーザー名に基づいて、値の変更を行うことができますか?

"user.home"と "user.dir"のようなものを調べましたが、変数の値にどのように実装するのか分かりません。

+1

['user.name'](https://docs.oracle.com/javase/tutorial/essential/environment/sysprop.html)環境変数を使用してください。 –

+0

私はこれを単に "Denisowator"の代わりに実装しますか? "C:\ Users \ user.name \ AppData \ Local \ Temp"になります。 – Denisowator

+0

これを見てください:http://stackoverflow.com/questions/585534/what-is-the-best-way-to-find-the-users-home-directory-in-java – Titus

答えて

1

静的サブパスで「のuser.home」の値を連結することで、あなたの変数を作成します。ただし、

String SRC_FOLDER = System.getenv("LOCALAPPDATA") + "\Temp"; 

String SRC_FOLDER = System.getProperty("user.home") + "\AppData\Local\Temp"; 

あなたはまた、環境変数を経由して変数を作成することができます後者はWindows上でのみ有効なフォルダを取得します。

+0

ありがとう、私は大学にいるように今はこれをテストできません。しかし、私が家に帰ると、アンディの質問に答えて、両方を試してみる。 – Denisowator

+0

ちょうどそれをテストしました。それは働いたが、私は質問がある。現在のユーザーのディレクトリのみが消去されますか?または、すべてのユーザーに同じディレクトリをクリアしますか?私は私のPC上の唯一のユーザーですので、私は新しいアカウントを作成しない限り、今すぐテストすることはできません。 – Denisowator

+0

btw @Andy Turnerそれは、ディレクトリが存在しないと言っただけで、それをクリアしませんでした。とにかく助けてくれてありがとう。 – Denisowator

関連する問題