使用Java在其中创建新目录和文件

我正在尝试在此目录中创建一个新目录和一个文件。 谁能告诉我哪里出错了?

我正在使用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"); } } } 

基本上,正在发生的是,你正在创建一个名为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实际上不会抛出任何exception,这很烦人,所以相反,我会做更像……

 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中。

这样做是为了在项目中创建一个新目录,创建一个文件然后在其上写:

 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(); } }