1

IOストリームを使用してファイルを作成または書き込む方法については、Java Webサイト(http://java.sun.com/docs/books/tutorial/essential/io/file.html#createStream )の指示に従っていました。ただし、提供されるコードは複数の場所で壊れているようです。

import static java.nio.file.StandardOpenOption.*;

Path logfile = ...;

//Convert the string to a byte array.
String s = ...;
byte data[] = s.getBytes();

OutputStream out = null;
try {
    out = new BufferedOutputStream(logfile.newOutputStream(CREATE, APPEND));
    ...
    out.write(data, 0, data.length);
} catch (IOException x) {
    System.err.println(x);
} finally {
    if (out != null) {
        out.flush();
        out.close();
    }
}

たとえば、Eclipseは、インポート時、およびスターターのPathクラスの使用時にクラッシュします。しかし、このチュートリアルは私がやりたいことを正確に提供しているように見えました-存在する場合はファイルに書き込み(上書き)、存在しない場合はファイルを作成し、最終的には出力ストリーム(ここでは、.newOutputStream()メソッドを使用して作成されます)。したがって、出力ストリームを使用した作成/書き込みは、有望な候補のように思われました。誰かが上記を修正して機能するようにする方法、または私がやりたいことを行うためのより良い方法を知っていますか?

4

1 に答える 1

3

この例では、SunJava6の一部ではないAPIを使用しているようです。

クラスPathとパッケージjava.nio.fileは、Sun JDK 7で追加される予定のAPIの一部です。ドキュメントへのリンクは、Sunのオープンソース開発バージョンのJavaであるOpenJDKPathのAPIドキュメントを指していることに注意してください。

したがって、通常のSun Java 6を使用している場合、これらのAPIを使用することはできません。

チュートリアルのスタートページにある警告を読んでください:

ファイルI/O(NIO.2を搭載)

このセクションは、次のリリースであるJDK7の機能と規則を反映するように更新されています。現在のJDK7スナップショットはjava.netからダウンロードできます。この暫定版を公開したので、最新の情報を入手できます。また、このチュートリアルに加えることができるエラー、脱落、または改善についてお知らせください。

Sun Java 6では、を使用できますFileOutputStream。ファイルが存在しない場合は自動的に新しいファイルを作成し、存在する場合は既存のファイルを上書きします。

FileOutputStream out = new FileOutputStream("filename.xyz");
out.write(data, 0, data.length);

注:テキストファイル(あなたがやりたいと思われること)を書くために、直接使用する代わりにWriter(例えば)を使用してください。は、文字エンコードを使用してテキストを変換します。FileWriterOutputStreamWriter

Java SE 6で利用できるものについては、Java SE 6 APIのドキュメント(特にパッケージのドキュメントjava.io)を参照してください。

于 2009-08-28T12:59:30.387 に答える