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 上获得一个有效文件夹。
我已经在这件事上坚持了至少整整一个月了。
我有的是指定目录的代码,然后检查目录是否为空。如果不是,它会删除其中的所有文件并保留目录文件夹。我用它来清理临时文件和回收站之类的东西。
我这样做的方法是在私有方法中声明一个名为 "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 上获得一个有效文件夹。