ChatGPT解决这个技术问题 Extra ChatGPT

如何在java中的目录中创建文件?

如果我想在 C:/a/b/test.txt 中创建一个文件,我可以执行以下操作:

File f = new File("C:/a/b/test.txt");

另外,我想使用 FileOutputStream 创建文件。那么我该怎么做呢?由于某种原因,该文件没有在正确的目录中创建。


R
RMT

最好的方法是:

String path = "C:" + File.separator + "hello" + File.separator + "hi.txt";
// Use relative path for Unix systems
File f = new File(path);

f.getParentFile().mkdirs(); 
f.createNewFile();

不适用于 Linux,因为在 unix 系统中没有“C:”之类的东西。
使用 new File("/a/b/test.txt") 对两个系统都有效。在 Windows 上,它将被写入与运行 JVM 的磁盘相同的磁盘。
f.getParentFile().mkdirs(); f.createNewFile();
不要忘记检查被调用的方法(mkdirs 和 createNewFile)调用是否有错误
if(!file.exists()) f.createNewFile();
B
BalusC

您需要在写入之前确保父目录存在。您可以通过 File#mkdirs() 执行此操作。

File f = new File("C:/a/b/test.txt");
f.getParentFile().mkdirs();
// ...

佚名

通过 Java 7,您可以使用 PathPathsFiles

import java.io.IOException;
import java.nio.file.FileAlreadyExistsException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

public class CreateFile {

    public static void main(String[] args) throws IOException {
        Path path = Paths.get("/tmp/foo/bar.txt");

        Files.createDirectories(path.getParent());

        try {
            Files.createFile(path);
        } catch (FileAlreadyExistsException e) {
            System.err.println("already exists: " + e.getMessage());
        }
    }
}

M
Marcelo

利用:

File f = new File("C:\\a\\b\\test.txt");
f.mkdirs();
f.createNewFile();

请注意,我将 Windows 文件系统中路径的正斜杠更改为双反斜杠。这将在给定路径上创建一个空文件。


在 Windows 上,\\ 和 / 都有效。顺便说一句,当您使用 FileOutputStream 写入它时,createNewFile() 是不必要的。
@Eric 指出并更正,谢谢。
这创建了一个名为 test.txt 而不是文件的目录。
M
Mayank
String path = "C:"+File.separator+"hello";
String fname= path+File.separator+"abc.txt";
    File f = new File(path);
    File f1 = new File(fname);

    f.mkdirs() ;
    try {
        f1.createNewFile();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

这应该在目录中创建一个新文件


M
Mehdi

一种更好更简单的方法:

File f = new File("C:/a/b/test.txt");
if(!f.exists()){
   f.createNewFile();
}

Source


A
AKHY

在指定路径中创建新文件

import java.io.File;
import java.io.IOException;

public class CreateNewFile {

    public static void main(String[] args) {
        try {
            File file = new File("d:/sampleFile.txt");
            if(file.createNewFile())
                System.out.println("File creation successfull");
            else
                System.out.println("Error while creating File, file already exists in specified path");
        }
        catch(IOException io) {
            io.printStackTrace();
        }
    }

}

程序输出:

文件创建成功


M
MasterJoe

令人惊讶的是,许多答案都没有给出完整的工作代码。这里是:

public static void createFile(String fullPath) throws IOException {
    File file = new File(fullPath);
    file.getParentFile().mkdirs();
    file.createNewFile();
}

public static void main(String [] args) throws Exception {
    String path = "C:/donkey/bray.txt";
    createFile(path);
}

K
Kirill Ch

要创建一个文件并在那里写一些字符串:

BufferedWriter bufferedWriter = Files.newBufferedWriter(Paths.get("Path to your file"));
bufferedWriter.write("Some string"); // to write some data
// bufferedWriter.write("");         // for empty file
bufferedWriter.close();

这适用于 Mac 和 PC。


F
Fridjato Part Fridjat

使用 FileOutputStream 试试这个:

public class Main01{
    public static void main(String[] args) throws FileNotFoundException{
        FileOutputStream f = new FileOutputStream("file.txt");
        PrintStream p = new PrintStream(f);
        p.println("George.........");
        p.println("Alain..........");
        p.println("Gerard.........");
        p.close();
        f.close();
    }
}

T
Tom

当您通过文件输出流写入文件时,将自动创建文件。但请确保创建了所有必要的目录(文件夹)。

    String absolutePath = ...
    try{
       File file = new File(absolutePath);
       file.mkdirs() ;
       //all parent folders are created
       //now the file will be created when you start writing to it via FileOutputStream.
      }catch (Exception e){
        System.out.println("Error : "+ e.getmessage());
       }