Философия Java

         

Ошибка?


Если вы взглянете на раздел 5, вы увидите, что данные записываются перед текстом. Дело в том, что эта проблема была представлена в Java 1.1 (и сохранилась в Java 2), я был уверен, что это ошибка. Когда я сообщил об этом людям, занимающимся ошибками в JavaSoft, они сказали мне, что это, Проблема показана в следующем коде:

//: c11:IOProblem.java

// Java 1.1 и высшая проблема ввода/вывода.

import java.io.*;

public class IOProblem { // Исключение выбрасывается на консоль:

public static void main(String[] args) throws IOException { DataOutputStream out = new DataOutputStream( new BufferedOutputStream( new FileOutputStream("Data.txt"))); out.writeDouble(3.14159); out.writeBytes("That was the value of pi\n"); out.writeBytes("This is pi/2:\n"); out.writeDouble(3.14159/2); out.close();

DataInputStream in = new DataInputStream( new BufferedInputStream( new FileInputStream("Data.txt"))); BufferedReader inbr = new BufferedReader( new InputStreamReader(in)); // Double, записанное ПЕРЕД текстом

// считывается правильно:

System.out.println(in.readDouble()); // Читаем строки текста:

System.out.println(inbr.readLine()); System.out.println(inbr.readLine()); // Попытка читать double после строки

// производит исключение конца файла:

System.out.println(in.readDouble()); } } ///:~

Кажется что все, что вы пишите после вызова writeBytes( ) не возвращаемо. Ответ, очевидно, тот же, что и в случае старой шутки водителя: “Доктор, мне больно, когда я делаю это!” “Так не делайте этого!”



Содержание раздела