次のMWEは、nioを使用してファイルを書き込む方法を理解しています。しかし、ファイルを開くと失敗します。ディレクトリに何も問題がないことを証明するために、古いスクールファイルは同じプロジェクト、同じディレクトリに書き込まれます。 NIのコードで何が問題になっていますか?java nioはファイルに書き込めず、古い学校のファイルが動作します。何が間違っていますか?
エラー:スレッド「main」の例外java.nio.file.NoSuchFileException:test.dat。このオプションは、既存のファイルに書き込むか、新しいファイルを作成する予定のCREATEに設定されていることに注意してください。 documentationから
import java.io.*;
import java.nio.*;
import java.nio.file.*;
import java.nio.channels.*;
public class FastWritenio {
public static void writeUsingPrintWriter() throws IOException {
PrintWriter pw = new PrintWriter(new FileWriter("test.txt"));
pw.print("testing");
pw.close();
}
public static void writeUsingnio(int numTrials, int bufferSize, int putsPer) throws IOException {
String filename = "test.dat";
java.nio.file.Path filePath = Paths.get(filename);
WritableByteChannel channel = Files.newByteChannel(filePath, StandardOpenOption.CREATE);
ByteBuffer buf = ByteBuffer.allocate(bufferSize);
for (int t = 0; t < numTrials; ++t) {
for (int i = 0; i < putsPer; i ++) {
buf.putInt(i);
}
buf.flip(); // stop modifying buffer so it can be written to disk
channel.write(buf); // Write your buffer's data.
}
channel.close();
}
public static void main(String[] args) throws IOException {
writeUsingPrintWriter();
writeUsingnio(16, 8*1024, 1024);
}
}
オープンに失敗した場合の例外は何ですか? – Compass
あなたは私にそれを打つ!編集 – Dov
を参照してください。 'text.txt!= test.dat' – QBrute