2012-05-03 3 views
1

내가 JDK 7을 사용하고 내가 다음 코드를 사용하여 간단한 쓰기에 파일 작업을 수행하려고 :FileWriter와 BufferedWriter의 수입은 JDK에 "충돌"입니다 7

import java.io.BufferedWriter; 
import java.io.FileWriter; // JAVA says this is conflicting...why? 

FileWriter fw = new FileWriter("hello.txt"); 
BufferedWriter bw = new BufferedWriter(fw); // JAVA says this is an error and asks me to convert FileWriter to type Writer. 

내가 JDK 7을 사용하고 있습니다 이것이 내가 항상 Java로 파일에 작성한 방법이지만 JDK 7에서는 이것이 처음이며 작동하지 않습니다.

이유를 설명해주세요.

+1

정확한 오류 메시지 란 무엇입니까? – Puce

+0

동일한 패키지에 다른 FileWriter 클래스가 있습니까? –

+0

@Puce, 2 errors, import.java.io.FileWriter가 java.io.BufferedWriter와 충돌하고 FileWriter fw를 Writer fw로 변경하도록 요청하고 있습니다. 저는 항상 FileWriter를 문제없이 BufferedWriter에 던졌습니다. 그러나 JDK 7로 업그레이드 한 후이 문제가 발생하므로 이유를 알고 싶습니다. – czchlong

답변

4

내가 생각할 수있는 유일한 이유는 코드 조각을 복사 한 클래스와 동일한 패키지에 FileWriter라는 클래스가 있다는 것입니다. 이 경우 FileWriter 클래스를 다른 패키지에서 가져올 수 없지만 코드 자체에서 정규화 된 이름 (java.io.FileWriter)을 사용해야합니다.

+0

내 파일 'FileWriter.java'에 이름을 짓는 어리석은 실수를했습니다 ... 지적 해 주셔서 고맙습니다. – czchlong

1

fw 인스턴스를 Writer으로 만들 수 있습니까? 예 :

Writer fw = new FileWriter("hello.txt"); 
BufferedWriter bw = new BufferedWriter(fw); 

구체적인 구현보다는 인터페이스/추상화를 사용하는 것이 좋습니다.

FileWriter는 Writer로부터 상속받은 OutputStreamWriter를 상속받습니다.

BufferedWriter 생성자가 Writer 인스턴스를 기대하고 있습니다.

+0

예, 할 수 있지만 그 이유는 무엇입니까? FileWriter의 문제점은 무엇입니까? – czchlong

+0

JDK 7에서이 새로운 규칙을 시행하기 위해 뭔가가 변경 되었습니까? – czchlong

+0

"BufferedWriter BW = 새 BufferedWriter (새 FileWriter ("someFile.txt "));" 나를 위해 잘 작동합니다. 확실히 IOException 처리 기능이 있습니다. ("try-catch"또는 "throws") – XenoRo

관련 문제