Java 基于当前用户定位目录

Java Targeting Directory Based On Current User

我已经在这件事上坚持了至少整整一个月了。

我有的是指定目录的代码,然后检查目录是否为空。如果不是,它会删除其中的所有文件并保留目录文件夹。我用它来清理临时文件和回收站之类的东西。

我这样做的方法是在私有方法中声明一个名为 "SRC_FOLDER" 的变量,该变量具有我要清理的目录的值。然后在 public 方法中,我编写了其余代码。

完整代码如下:

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());
        }
    }
  }

如您所见,该变量用作文件的值,该文件本质上是我要清理的文件夹,然后检查文件的长度(其中的文件数量),如果长度超过零,文件被删除。

一切正常,但我遇到的问题是根据用户执行代码指定相同的目录。

假设我把这个程序给了某人,他们的名字是 "Steve" 或类似的名字。该代码将无法运行,因为它正在 Users 文件夹中查找用户 "Denisowator"。那么如何根据用户的用户名更改值?

我研究过 "user.home" 和 "user.dir" 之类的东西,但我不知道如何将其实现为变量的值。

通过将 "user.home" 的值与静态子路径连接起来创建您的变量:

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

您也可以通过环境变量创建变量:

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

但是,后者只会在 windows 上获得一个有效文件夹。