212

ファイル (文字列ファイル名) が存在しない場合にそれを作成する方法で FileOutputStream を使用する方法はありますか?

FileOutputStream oFile = new FileOutputStream("score.txt", false);
4

9 に答える 9

339

FileNotFoundExceptionファイルが存在せず、作成できない場合 ( doc )をスローしますが、可能であれば作成します。確実に作成する前に、ファイルが存在することを最初にテストする必要があります(存在しない場合はFileOutputStream作成します):createNewFile()

File yourFile = new File("score.txt");
yourFile.createNewFile(); // if file already exists will do nothing 
FileOutputStream oFile = new FileOutputStream(yourFile, false); 
于 2012-03-08T16:00:55.703 に答える
29

apache commons のFileUtilsは、これを 1 行で実現するための非常に優れた方法です。

FileOutputStream s = FileUtils.openOutputStream(new File("/home/nikhil/somedir/file.txt"))

これにより、存在しない場合は親フォルダーが作成され、存在しない場合はファイルが作成され、ファイル オブジェクトがディレクトリであるか書き込みできない場合は例外がスローされます。これは次と同等です。

File file = new File("/home/nikhil/somedir/file.txt");
file.getParentFile().mkdirs(); // Will create parent directories if not exists
file.createNewFile();
FileOutputStream s = new FileOutputStream(file,false);

現在のユーザーが操作を実行することを許可されていない場合、上記のすべての操作は例外をスローします。

于 2016-07-09T18:02:18.460 に答える
26
File f = new File("Test.txt");
if(!f.exists()){
  f.createNewFile();
}else{
  System.out.println("File already exists");
}

fこれをFileOutputStreamコンストラクタに渡します。

于 2012-03-08T16:04:07.800 に答える
26

存在するかどうかに関係なく、空のファイルを作成できます...

new FileOutputStream("score.txt", false).close();

ファイルが存在する場合は残したい場合...

new FileOutputStream("score.txt", true).close();

存在しないディレクトリにファイルを作成しようとした場合にのみ、FileNotFoundException が発生します。

于 2012-03-08T16:31:13.490 に答える
5

ファイルが存在しない場合は作成します。ファイルが存在する場合は、その内容をクリアします。

/**
 * Create file if not exist.
 *
 * @param path For example: "D:\foo.xml"
 */
public static void createFile(String path) {
    try {
        File file = new File(path);
        if (!file.exists()) {
            file.createNewFile();
        } else {
            FileOutputStream writer = new FileOutputStream(path);
            writer.write(("").getBytes());
            writer.close();
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
}
于 2016-08-19T03:51:17.600 に答える
2

パスとファイルを使用してファイルが存在しない場合にのみ、ファイルを作成する別の方法を提供するだけです。

Path path = Paths.get("Some/path/filename.txt");
Files.createDirectories(path.getParent());
if( !Files.exists(path))
    Files.createFile(path);
Files.write(path, ("").getBytes());
于 2018-02-14T08:42:52.107 に答える
0

FileNotFoundExceptionファイルが存在しない場合は、を取得できる可能性があります。

Javaのドキュメントには次のように書かれています:

ファイルが使用可能かどうか、または作成できるかどうかは、基盤となるプラットフォーム http://docs.oracle.com/javase/7/docs/api/java/io/FileOutputStream.htmlによって異なります。

Java 7 を使用している場合は、java.nio パッケージを使用できます。

options パラメータは、ファイルを作成または開く方法を指定します...ファイルを書き込み用に開き、ファイルが存在しない場合はファイルを作成します...

http://docs.oracle.com/javase/7/docs/api/java/nio/file/Files.html

于 2012-03-08T16:07:54.710 に答える