【发布时间】:2017-03-07 10:08:24
【问题描述】:
我已经被这件事困住了至少整整一个月了。
我所拥有的是一个指定目录的代码,然后检查该目录是否为空。如果不是,它会删除其中的所有文件并离开目录文件夹。我用它来清理临时文件和回收站之类的东西。
我这样做的方式是,我在私有方法中声明了一个名为“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());
}
}
}
如您所见,该变量用作文件的值,该文件本质上是我要清理的文件夹,然后检查文件的长度(其中的文件数量),如果长度大于零,文件被删除。
一切正常,但我遇到的问题是根据用户执行代码的方式指定相同的目录。
假设我将这个程序提供给某人,他们的名字是“Steve”或类似的名字。该代码不起作用,因为它正在用户文件夹中寻找用户“Denisowator”。那么如何根据用户的用户名来更改值呢?
我研究过诸如“user.home”和“user.dir”之类的东西,但我不知道如何将它们实现为变量的值。
【问题讨论】:
-
使用
user.name环境变量。 -
我可以简单地实现这个来代替“Denisowator”吗?所以它会是“C:\Users\user.name\AppData\Local\Temp”。
-
@Denisowator 是的。
-
我明白了,在这种情况下,如果您需要它仅在 Windows 系统上工作,您可以执行以下操作:
System.getenv("AppData") + "\\Local\\Temp"或System.getProperty("user.home").replace("Roaming", "Local\\Temp")
标签: java directory subdirectory