2009-08-28 7 views
1

IOストリームを使用してファイルを作成または書き込む際にJavaウェブサイト(http://java.sun.com/docs/books/tutorial/essential/io/file.html#createStream)の指示に従っていました。しかし、それが提供するコードが複数の場所で壊れているように見える:IOストリームを使用して既存のファイルを開くか存在しない場合は作成する

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()メソッドを使用してここで作成されます)。だから、出力ストリームを使った作成/書き込みは有望な候補のようでした。誰も、それが動作するように上記を修正する方法、または私がやりたいことをするためのより良い方法を知っていますか?例は、SunのJavaの一部6.

クラスPathとパッケージjava.nio.fileではありませんリンクという日JDK 7ノートに追加されようとしているAPIの一部であるAPIを使用しているように思われること

答えて

2

Pathのドキュメントには、Javaのオープンソース開発版のOpenJDKのAPIドキュメントが記載されています。

ファイルI/O(フィーチャリングNIO.2):あなたは、通常の日のJava 6

を使用している場合

だから、あなたはthe start page of the tutorialに警告を読んで、これらのAPIを使用することはできません

このセクションは、次期リリースのJDK7の機能と慣例を反映するように更新されています。 java.netから現在のJDK7スナップショットをダウンロードできます。この暫定版を公開しましたので、最新の情報を今すぐ入手できるので、このチュートリアルの誤り、省略、改善について教えてください。

Sun Java 6では、FileOutputStreamを使用できます。

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

注:ファイルが存在しないか、それが存在する場合、既存のファイルを上書きしない場合は、自動的に新しいファイルを作成します(あなたがやりたいように見える何が何であるか)のテキストファイルを書き込むために使用し、直接OutputStreamを使用する代わりに、Writer(たとえば、FileWriter)を使用してください。 Writerは、文字エンコーディングを使用してテキストを変換します。

は、Java SE 6

+0

に利用できるかについての情報についてJava SE 6 API Documentation(パッケージjava.ioの特にドキュメントは)あなたは、私はこれらのAPIなしでやりたいために私のための別の方法を提案することができますか? – sepiroth

+0

JDK 6はSun Java 6の開発キットです.JDK 7は2010年3月にリリースされるSun Javaの次期リリースになる予定です。 – Jesper