2015-11-15 3 views
0

Итак, я пытаюсь использовать соединение одной программы Java со входом другой программы, и мне интересно, эффективен ли способ, которым я это сделал, или если есть лучший способ. Я сохраняю строку в текстовый файл в первой программе и читаю строку, а затем печатаю ее во второй. Есть ли способ просто вырезать текстовый файл как средний человек?Относительно подключения двух программ Java

Вот моя первая программа:

import java.util.Scanner; 
import java.io.*; 

public class pip1{ 
    public static void main(String[] args){ 
     String inString = ""; 
     Scanner sc = new Scanner(System.in); 
     inString = sc.next(); 
     try{ 
      PrintWriter out = new PrintWriter("word.txt"); 
      out.println(inString); 
      out.close(); 
     } catch(FileNotFoundException ex){ } 
    } 
} 

и вот второй:

import java.io.*; 

public class pip2{ 
    public static void main(String[] args) { 
     String fileName = "word.txt"; 
     try { 
      FileReader fr = new FileReader(fileName); 

      BufferedReader br = new BufferedReader(fr); 

      String outString = br.readLine(); 
      br.close(); 
      fr.close(); 

      System.out.println(outString); 
     } catch (FileNotFoundException ex) {} 
      catch (IOException ex) {} 
    } 
} 

Спасибо!

+0

Просто напишите stdout в первом, прочитайте с stdin во втором и просто пропустите вывод первого во второй, когда вы запустите: 'java pip1 | java pip2'. –

+0

Путь Энди прост и совершенен, если вы используете * nix. – Tipton

+0

Он также работал в [Windows XP] (http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/redirection.mspx?mfr=true) - удалить MS? –

ответ

0

Я предполагаю, что вы хотите, это труба, которая действует как «промежуточный провод» между двумя процессами без использования «временного файла».

Поэтому я рекомендую вам прочитать документ о Трубах в JAVA.

Вот a link of tutorial.

Также см javadoc about PipedInputStream

javadoc about PipedOutputStream

Более того, если ваша операционная система поддерживает IO Перенаправление от терминала, а затем просто сделать это без использования, как говорит Энди. Это было бы проще всего.

0

Просто напишите System.out в первом, считанной из System.in в вашей второй, и использовать трубу, чтобы подключить выход из первого во второй, когда вы запустите две команды:

java pip1 | java pip2 
Смежные вопросы