我正在尝试在此目录中创建一个新目录和一个文件。谁能告诉我哪里出错了?
我正在使用Windows系统,我希望目录存在于我的.java
文件所在的文件夹中。
import java.io.*;
class PS_Task1 {
public static void main(String[] args) {
try {
File file = new File("Library\\test.txt");
file.mkdir();
file.createNewFile();
}
catch(Exception e) {
System.out.println("ecception");
}
}
}
答案 0 :(得分:29)
基本上,正在发生的是,你正在创建一个名为Library\test.txt
的目录,然后尝试创建一个名为同一个东西的新文件,这显然不会起作用。
所以,而不是......
File file = new File("Library\\test.txt");
file.mkdir();
file.createNewFile();
...试
File file = new File("Library\\test.txt");
file.getParentFile().mkdir();
file.createNewFile();
其他强>
mkdir
如果失败,实际上不会抛出任何异常,这很烦人,所以相反,我会做更像......
File file = new File("Library\\test.txt");
if (file.getParentFile().mkdir()) {
file.createNewFile();
} else {
throw new IOException("Failed to create directory " + file.getParent());
}
就这样,我知道实际问题是什么......
其他强>
目录的创建(在此上下文中)将位于您运行程序的位置...
例如,从C:\MyAwesomJavaProjects\FileTest
运行程序,将在此目录中创建Library
目录(即C:\MyAwesomJavaProjects\FileTest\Library
)。在.java
文件所在的位置创建它通常不是一个好主意,因为您的应用程序实际上可能会在以后捆绑到Jar中。
答案 1 :(得分:3)
这样做是为了在项目中创建一个新目录,创建一个文件然后在其上书写:
public static void main(String[] args) {
//System.getProperty returns absolute path
File f = new File(System.getProperty("user.dir")+"/folder/file.txt");
if(!f.getParentFile().exists()){
f.getParentFile().mkdirs();
}
//Remove if clause if you want to overwrite file
if(!f.exists()){
try {
f.createNewFile();
} catch (Exception e) {
e.printStackTrace();
}
}
try {
//dir will change directory and specifies file name for writer
File dir = new File(f.getParentFile(), f.getName());
PrintWriter writer = new PrintWriter(dir);
writer.print("writing anything...");
writer.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}