• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            逛奔的蝸牛

            我不聰明,但我會很努力

               ::  :: 新隨筆 ::  ::  :: 管理 ::

            ///////////////////////////////////////////////////////////////////////////////

            // 類Test是用來測試的,即一個進程,它要求在控制臺進行輸入輸出, 類Terminal模擬了Eclipse的控制臺.

            /////////////////////////////////////////////////////////////////////////////// 

            import java.util.Scanner;


            public class Test {

                public static void main(String[] args) {

                    System.out.println("Hi, Console");

                    System.out.println("Go, Console");

                    

                    System.out.println("Please input ...");

                    Scanner scanner = new Scanner(System.in);

                    String str = scanner.nextLine();

                    System.out.println("Your input is: " + str);

                }

            }


            ///////////////////////////////////////////////////////////////////////////////

            // 在類Terminal中有三個線程,一個用于監聽proc正常的輸出,一個監聽proc的錯誤輸出,一個用于

            // 監聽用戶輸入到控制臺的數據,然后把這個數據輸出到proc里(對于proc來說是輸入)

            /////////////////////////////////////////////////////////////////////////////// 

            import java.io.BufferedReader;

            import java.io.IOException;

            import java.io.InputStream;

            import java.io.InputStreamReader;

            import java.io.OutputStream;

            import java.io.PrintWriter;

            import java.util.Scanner;


            public class Terminal {


                public static void main(String[] args) throws IOException, InterruptedException {

                    final Process proc = Runtime.getRuntime().exec("java Test");


                    // Normal input thread

                    new Thread() {

                        public void run() {

                            InputStream in = proc.getInputStream();

                            BufferedReader reader = new BufferedReader(new InputStreamReader(in));


                            try {

                                int ch = 0;

                                while ((ch = reader.read()) != -1) { // 不用readLine是為了防止print沒有回車的輸出

                                    System.out.print((char) (ch));

                                }


                                System.out.println("Process end.");

                                // 當讀取到-1時,說明proc已經結束,所以本程序也應該結束了(或者結束輸出線程)

                                System.exit(0); 

                            } catch (IOException e) {

                                e.printStackTrace();

                            }

                        }

                    }.start();


                    // Error input thread

                    new Thread() {

                        public void run() {

                            InputStream in = proc.getErrorStream();

                            BufferedReader reader = new BufferedReader(new InputStreamReader(in));

                            String line = null;


                            try {

                                while ((line = reader.readLine()) != null) {

                                    System.err.println(line);

                                }

                            } catch (IOException e) {

                                e.printStackTrace();

                            }

                        }

                    }.start();


                    // System.out.println("Sleep...");

                    // Thread.sleep(3000); // 程序在這里等待時,在Eclipse的控制臺也能進行輸入

                    // 當proc代表的程序結束后,Eclipse才強制在控制臺不能進行輸入


                    // Output thread.

                    // 在輸入中按下回車后取得當前行字符(去掉傳進來的,只取輸入的部分),然后轉對方.

                    new Thread() {

                        public void run() {

                            OutputStream out = proc.getOutputStream();

                            PrintWriter writer = new PrintWriter(out);

                            Scanner scanner = new Scanner(System.in);

                            String str = null;

                            while ((str = scanner.nextLine()) != null) {

                                writer.println(str);

                                writer.flush();

                            }

                        }

                    }.start();

                }

            }


            ///////////////////////////////////////////////////////////////////////////////

            // 執行方法:

            ///////////////////////////////////////////////////////////////////////////////

            1. 先編譯好這兩個文件放在同一個文件夾里

            2. 在終端里執行: java Terminal

            3. 看終端里的提示進行操作

            posted on 2010-05-20 01:34 逛奔的蝸牛 閱讀(2262) 評論(0)  編輯 收藏 引用 所屬分類: Java
            久久精品成人免费国产片小草| 欧美久久久久久| 国产成人精品久久二区二区 | 国产精品女同一区二区久久| 日韩一区二区久久久久久| 午夜福利91久久福利| 亚洲AV无码一区东京热久久| 亚洲国产成人久久精品影视| 欧美久久亚洲精品| 精品乱码久久久久久久| 少妇久久久久久被弄到高潮| 青青草原精品99久久精品66| 久久免费国产精品| 国产亚洲婷婷香蕉久久精品| 国产精品久久久久久久人人看| 国产精品久久影院| 色偷偷偷久久伊人大杳蕉| 青青热久久国产久精品| 久久久精品一区二区三区| 亚洲国产精品无码久久久蜜芽| 四虎亚洲国产成人久久精品| 精品久久久久久久久中文字幕| 亚洲香蕉网久久综合影视| 久久男人中文字幕资源站| 久久99精品国产麻豆宅宅| 亚洲∧v久久久无码精品| 香蕉久久夜色精品国产尤物| 精品国产青草久久久久福利 | 久久人人爽人人爽人人片av高请 | 色综合久久中文色婷婷| 欧美一区二区三区久久综合| 亚洲欧洲精品成人久久奇米网| 精品久久久久久无码中文野结衣| 久久久久夜夜夜精品国产| 国产精品美女久久久久网| 国产精品久久久亚洲| av国内精品久久久久影院| 国产成人精品久久一区二区三区 | 品成人欧美大片久久国产欧美...| 国产成人久久精品一区二区三区| 久久天天躁狠狠躁夜夜网站|