Javaのディレクトリにファイルを作成するにはどうすればよいですか?


156

でファイルを作成したい場合C:/a/b/test.txt、次のようなことができますか?

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

また、FileOutputStreamファイルの作成にも使用したいと思います。では、どうすればよいでしょうか。何らかの理由で、ファイルが正しいディレクトリに作成されません。

回答:


245

それを行う最善の方法は次のとおりです。

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

35
UNIXシステムには「C:」などがないため、Linuxでは機能しません。
Marcelo、

33
new File("/a/b/test.txt")両方のシステムで作品を使用します。Windowsでは、JVMが実行されているのと同じディスクに書き込まれます。
BalusC、2011年

6
f.getParentFile().mkdirs(); f.createNewFile();
Patrick Bergner、2014年

1
呼び出されたメソッド(mkdirsおよびcreateNewFile)の呼び出しでエラーを確認することを忘れないでください
Alessandro S.

1
if(!file.exists())f.createNewFile();
Mehdi 2017年

50

書き込む前に、親ディレクトリが存在することを確認する必要があります。あなたはこれを行うことができますFile#mkdirs()

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

38

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

12

使用する:

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

Windowsファイルシステムのパスのスラッシュを2つのバックスラッシュに変更したことに注意してください。これにより、指定したパスに空のファイルが作成されます。


1
Windowsでは、\\と/の両方が有効です。とにかくcreateNewFile()それを書いているときは、ちなみにこれは不要FileOutputStreamです。
BalusC、2011年

@Ericの注意と修正、ありがとうございます。
Marcelo、

これにより、ファイルの代わりにtest.txtというディレクトリが作成されました。
MasterJoe2

3

それを行うためのより良い簡単な方法:

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

ソース


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

これにより、ディレクトリ内に新しいファイルが作成されます


0

指定したパスに新しいファイルを作成

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

}

プログラム出力:

ファイルの作成に成功しました


0

驚いたことに、答えの多くは完全に機能するコードを提供していません。ここにあります:

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

0

ファイルを作成してそこに文字列を書き込むには:

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で動作します。


0

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();
    }
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.