有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

基于当前用户的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) 个答案

  1. # 1 楼答案

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

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

    还可以通过环境变量创建变量:

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

    但是,后者只能在windows上获得有效文件夹