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

使用Java在其中创建新目录和文件,java,file,directory,Java,File,Directory,我正在尝试在此目录中创建一个新目录和一个文件。谁能告诉我哪里出了问题 我使用的是Windows系统,我希望目录位于my.java文件所在的文件夹中 import java.io.*; class PS_Task1 { public static void main(String[] args) { try { File file = new File("Library\\test.txt"); file.mkdir();

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

我使用的是Windows系统,我希望目录位于my
.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
如果失败,实际上不会抛出任何类型的异常,这相当烦人,所以我会做一些更像

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
运行程序,将在此目录中创建
目录(即
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();
    } 

}

这是Java的基础。如果您阅读了@Rock123中关于基本Java的文档,您可能会发现这一点。您想在这里提问,然后又问了。您可以给我指出一个更好的资源。这段代码在windows中工作,但在linux中不工作。基本原理应该是可行的,假设您有创建目录/文件的写入权限,我在MacOS和Unix系统上使用了相同的技术,效果很好