2015-01-10 11 views
10

ファイルが存在しない場合は、Java 7またはJava 8でファイルを作成する方法は?クリーンなJava 7つの方法でファイルが作成されていない場合は作成する

+1

AFAIK Java 8は、ファイルの操作方法を変更しません。 – alfasin

+1

@alfasin Java 7(したがってJava 8も同様)は、java.nio.fileを使って大幅に変更しました。残念なことに、今日でも未だ使用されていません。 – fge

+0

@fge確かにそうです。私はそれを削除します。 – Biffen

答えて

20

ないあなたが望むものを確認、しかし、例えば:

try { 
    Files.createFile(thePath); 
} catch (FileAlreadyExistsException ignored) { 
} 

そして、他のソリューションがあります。例えば:ファイルの作成が失敗した場合にFileとは異なり、これらは例外をスローすることを

if (!Files.exists(thePath, LinkOption.NOFOLLOW_LINKS)) 
    Files.createFile(thePath); 

注意!それに関連するもの(例:AccessDeniedExceptionReadOnlyFileSystemExceptionなど)

詳細については、hereを参照してください。また、why you should migrate to java.nio.file, quicklyを参照してください。

+0

これを行うための1行のコードはありませんか? – emotionull

+2

いいえ、それは本当に重要ですか? ;)あなたが望むならあなた自身のユーティリティメソッドを作成することはできますが、これは実際には問題ではありません – fge

+2

try {Files.createFile(thePath); } catch(FileAlreadyExistsException ignored){} – mac01021

1

あなたはメソッドファイルのクラスを使用することができNIO.2を使用する場合は、

File f = new File("pathToYourFile"); 
if(!f.exists() && !f.isDirectory()) 
{ 
    f.createNewFile() 
} 

を行うことができます。 FGEコメントcreateNewFile()方法で述べたように

boolean exists(Path path,LinkOption. . . options) 
Path createTempFile(Path dir, String prefix,String suffix, FileAttribute<?>. . . attrs) 
createFile(Path path, FileAttribute<?>... attrs) 

は、ファイルが実際に作成されたかどうか示すboolean値を返します。残念ながら、それがなぜ失敗したのかを知る方法はありません。実際、これはNIO.2 I/O APIが導入された理由の1つです。

+1

そして...あなたは '.createNewFile()'の結果をチェックしません! – fge

関連する問題