我只是想知道我制作的代码是否可以在彼此之间创建多个目录。我使用this作为参考。
String username = enterUserTF.getText(); //the username the user enters in a textfield.
boolean myGamesFolderSuccess = new File(System.getProperty("user.home"), "My Games").mkdir();
boolean mainFolderSuccess = new File("My Games", "Type King").mkdir();
boolean userSuccess = new File("TypeKing", username).mkdir(); //creates a folder with the users username.
if(myGamesFolderSuccess){
if(mainFolderSuccess){
if(userSuccess){
System.out.println("Directory " + username + " created.");
File f = new File(username + "/test.txt");
if(!f.exists()){
try {
f.createNewFile();
} catch (IOException e) {
e.printStackTrace();
System.out.println("Could not create user's file.");
}
}
}
}
}
}
总而言之,我在user.home
创建了第一个目录“我的游戏”,然后在我的目录中放置了我的游戏名称“Type King”,每当用户输入用户名时,我想要创建一个用户名的目录。 File f
只检查username
目录中的文件。
答案 0 :(得分:2)
如果您将完整路径传递给File.mkdirs(带有s),它将构成一个任意深度的目录结构。您不必一次构建一个目录的路径。如果目录已经存在,或者存在其中一些目录,它仍将按预期工作。
答案 1 :(得分:2)
建议使用mkdirs
类的File
方法,而不是在创建嵌套目录时检查多个状态标志。此外,永远不要使用连接来创建File
对象/路径。
此外,如果您希望您的游戏可移植,请确保您的目录名称中没有特殊字符,例如空格等。为什么要求用户输入名称而不是从user.name
检索它系统属性?这样的事情应该有效:
String username = System.getProperty("user.name");
File myGamesDir = new File(System.getProperty("user.home"), "my-games");
File typeKingDir = new File(myGamesDir, "type-king");
File userDir = new File(typeKingDir, username);
boolean userSuccess = userDir.mkdirs();
if(userSuccess){
System.out.println("Directory " + username + " created.");
File f = new File(userDir, "test.txt");
if(!f.exists()){
try {
f.createNewFile();
} catch (IOException e) {
e.printStackTrace();
System.out.println("Could not create user's file.");
}
}
}
答案 2 :(得分:1)
import java.io.File;
import javax.swing.JOptionPane;
class Dirs {
public static void main(String[] args) throws Exception {
String subDir = "My Games|Type King";
String userName = JOptionPane.showInputDialog(
null,
"Who are you?");
subDir += "|" + userName;
String[] parts = subDir.split("\\|");
File f = new File(System.getProperty("user.home"));
for (String part : parts) {
f = new File(f, part);
}
boolean madeDir = f.mkdirs();
System.out.println("Created new dir: \t" + madeDir + " \t" + f);
f = new File(f, "eg.txt");
if (!f.exists()) {
boolean madeFile = f.createNewFile();
System.out.println(
"Created new file: \t" + madeFile + " \t" + f );
}
}
}
Created new dir: true C:\Users\Andrew\My Games\Type King\BilboBaggins
Created new file: true C:\Users\Andrew\My Games\Type King\BilboBaggins\eg.txt
答案 3 :(得分:0)
我认为最好使用API中提供的现有功能。如果您没有任何限制,请考虑切换到最新的JDK。在1.7中,Oracle确实引入了许多增强功能,包括 IO 和新IO 。
要在彼此之间创建多个目录,您可以利用自1.7以来的Files.createDirectories。 “它将通过首先创建所有不存在的父目录来创建目录。”