2015-01-10 2 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); 

주의! 그리고 관련성이있는 것들 (예 : AccessDeniedException, ReadOnlyFileSystemException 등)

자세한 내용은 here을 참조하십시오. 또한 why you should migrate to java.nio.file, quickly을 참조하십시오. 당신은 당신이 방법 파일 클래스를 사용할 수 있습니다 NIO.2를 사용하려면

+0

이렇게 할 라인 코드가 하나도 없습니까? – emotionull

+2

아니요,하지만 정말로 중요합니까? ;) 원하는 경우 자신의 유틸리티 메서드를 만들 수 있습니다. 실제로는 문제가되지 않습니다. – fge

+2

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

1

당신은

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

을 할 수 있습니다.

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

는 FGE는 의견 createNewFile() 방법에서 언급 한 바와 같이 실제로 파일이 생성되거나되지 않은 경우 나타내는 boolean 값을 반환합니다. 불행히도 그것이 실패한 이유를 알 수있는 방법이 없습니다. 사실 이것은 NIO.2 I/O API가 도입 된 이유 중 하나입니다.

+1

그리고 ...'.createNewFile()'의 결과를 체크하지 않는다! – fge

관련 문제