powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Чтение пайпа "|".
11 сообщений из 11, страница 1 из 1
Чтение пайпа "|".
    #34446763
Фотография pamir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно ли в джавином приложении прочитать то, что передоно в пайпе (в ОС), по типу следующего
сat my.file | my.jar
И если можно, то как?
Про пайпы для разных потоков одного приложения читал (PipeReader, PipeWriter), это вроде не то.

Нужно для этого . Пришедшие письма фильтр передает именно таким образом.
...
Рейтинг: 0 / 0
Чтение пайпа "|".
    #34447203
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pamirМожно ли в джавином приложении прочитать то, что передоно в пайпе (в ОС), по типу следующего
сat my.file | my.jar
И если можно, то как?

Можно. Только вот так:
Код: plaintext
сat my.file | java -jar my.jar

Про пайпы для разных потоков одного приложения читал (PipeReader, PipeWriter), это вроде не то.
Это только для коммуникации между java-threads.
...
Рейтинг: 0 / 0
Чтение пайпа "|".
    #34447218
Фотография pamir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton pamirМожно ли в джавином приложении прочитать то, что передоно в пайпе (в ОС), по типу следующего
сat my.file | my.jar
И если можно, то как?

Можно. Только вот так:
Код: plaintext
сat my.file | java -jar my.jar

Ну, так, значит так. Не важно. Вроде бы я уже нашел решение. Видимо вчера неправильно читал System.in. Т.е. был на правильном пути...
Проверю и отпишусь.
...
Рейтинг: 0 / 0
Чтение пайпа "|".
    #34448264
Фотография pamir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот этот код работает (проверял на dir | java -jar my.jar)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
         try  {
            BufferedReader in =  new  BufferedReader( new  InputStreamReader(System.in));
            StringBuffer sb =  new  StringBuffer();
             int  myChar;
             while  ((myChar = in.read())!=- 1 ) {
                sb.append(( char )(myChar));
            }    
            FileOutputStream fos =  new  FileOutputStream("test.file");
            String str = "\n=== Cut here ===\n";
            String strWrite = str+sb.toString()+str;
            fos.write(strWrite.getBytes());
            fos.close();
        }  catch  (FileNotFoundException ex) {
            ex.printStackTrace();
        }  catch  (IOException ex) {
            ex.printStackTrace();
        }
    }

Однако, если на вход ничего не подавать, то оно "виснет". Если запускать уже джар (java -jar my.jar), то видно, что можно вводить с клавиатуры и по ctrl+c программа завершает работу и в файле лежит все, что я набирал.
Но когда я запускал это дело из нетбинса, для отладки, создавалось впечатление, что все просто виснет. Поэтому я и думал, что делаю что-то не так....
...
Рейтинг: 0 / 0
Чтение пайпа "|".
    #34448304
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В NB вроде можно включить строку ввода для отладки консольных приложений?
...
Рейтинг: 0 / 0
Чтение пайпа "|".
    #34448359
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pamirВот этот код работает (проверял на dir | java -jar my.jar)

Прелесть использования конвейеров состоит в том, что вы имеете возможность начинать
обработку потока до того , как весь поток прогружен. Следующий исходник выполняет ту-же задачу, что и ваш, но не создаёт БуфернуюСтроку. Преимущество будет очевидно, если письмо будет содержать 100-мегабайтное вложение .

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
         try  {
            BufferedReader in =  new  BufferedReader( new  InputStreamReader(System.in));
             int  myChar;
	    System.out.print("\n=== Cut here ===\n");
             while  ((myChar = in.read())!=- 1 ) System.out.print(( char )myChar);
	    System.out.print("\n=== Cut here ===\n");
        }  catch  (IOException ex) {
            ex.printStackTrace();
        }

Запускать его следует так:
Код: plaintext
1.
сat my.file | java -jar my.jar > test.file
...
Рейтинг: 0 / 0
Чтение пайпа "|".
    #34448388
Фотография pamir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все хорошо, только в файл я пишу пока для отладки. В дальнейшем мне не нужно будет этого. Необходимо будет считать письмо, распарсить его текст (в том числе и поле From) и распихать по полям в БД.
Большие письма сразу будут идти в корзину. Еще на уровне фильтра.

PS. Раз уж пошел разговор о почте - есть ли что-то готовое, или мне нужно будет самому парсить письмо на тело, заголовки и т.п....

Скажи Microsoft'у "Прощай"!
...
Рейтинг: 0 / 0
Чтение пайпа "|".
    #34448402
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot pamir]Раз уж пошел разговор о почте - есть ли что-то готовое, или мне нужно будет самому парсить письмо на тело, заголовки и т.п....quot]

Если знаком с механизмом regexp-ов - то никаких проблем.
...
Рейтинг: 0 / 0
Чтение пайпа "|".
    #34448409
Фотография pamir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton[quot pamir]Раз уж пошел разговор о почте - есть ли что-то готовое, или мне нужно будет самому парсить письмо на тело, заголовки и т.п....[quot]

Если знаком с механизмом regexp-ов - то никаких проблем.
Не на "ты", но кое-как. Заодно и познакомлюсь плотнее.
Я так понимаю, что нужно будет найти описание структуры письма и уложить ее в регулярные выражения. Да?
...
Рейтинг: 0 / 0
Чтение пайпа "|".
    #34448422
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Думаю, regexp для всего письма будет слишком сложен. Проще написать шаблоны для ключевых строк (заголовки, ограничители) и делать парсинг построчно.
...
Рейтинг: 0 / 0
Чтение пайпа "|".
    #34448424
Фотография pamir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonДумаю, regexp для всего письма будет слишком сложен. Проще написать шаблоны для ключевых строк (заголовки, ограничители) и делать парсинг построчно.
Ок. Дома покопаюсь.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Чтение пайпа "|".
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]