Шифратор (smok) wrote,
Шифратор
smok

  • Music:

Java API поражает

В классе java.lang.Process разумно представлены три метода для связи с его стандартными потоками IO - stdin, stdout, stderr. Хотим вычитать из stderr, берем у него getErrorStream() - получаем InputStream. Отлично. Хотим вычитать из stdout, берем у него... getOutputStream()? Фигу! Используй getInputStream() - "Gets the input stream of the subprocess. The stream obtains data piped from the standard output stream of the process represented by this Process object..." (javadoc). Та же фигня со stdin - для него есть метод getOutputStream().

Проблема в том, что метод соотв. stderr вполне нормально воспринимается с точки зрения объекта класса Process (как и должно быть, ООП епт), но для stdin и stdout всю эту фигню корректно можно воспринимать только с точки зрения "пользователя" процессом, типа можем считать из stdout процесса, давайте нам InputStream, а когда хотим записать в его stdin, давайте нам OutputStream. Вообще бред. Есть даже Bug ID: 4294755 на эту тему, который имеет статус Closed, will not be fixed (ну, хотя менять API дело темное, их тоже можно понять). Но кто-то же за такое должен получить по рукам? :)

упд. хотя, почему бы не объявить эти методы deprecated, зато добавить к ним что-нибудь в духе getStderr(), getStdout(), getStdin()...
Tags: прогр.
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 0 comments