2012-05-03 16 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エラー、それは、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

関連する問題