• <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>

            逛奔的蝸牛

            我不聰明,但我會(huì)很努力

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

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

            // 類Test是用來(lái)測(cè)試的,即一個(gè)進(jìn)程,它要求在控制臺(tái)進(jìn)行輸入輸出, 類Terminal模擬了Eclipse的控制臺(tái).

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

            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中有三個(gè)線程,一個(gè)用于監(jiān)聽(tīng)proc正常的輸出,一個(gè)監(jiān)聽(tīng)proc的錯(cuò)誤輸出,一個(gè)用于

            // 監(jiān)聽(tīng)用戶輸入到控制臺(tái)的數(shù)據(jù),然后把這個(gè)數(shù)據(jù)輸出到proc里(對(duì)于proc來(lái)說(shuō)是輸入)

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

            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沒(méi)有回車的輸出

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

                                }


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

                                // 當(dāng)讀取到-1時(shí),說(shuō)明proc已經(jīng)結(jié)束,所以本程序也應(yīng)該結(jié)束了(或者結(jié)束輸出線程)

                                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); // 程序在這里等待時(shí),在Eclipse的控制臺(tái)也能進(jìn)行輸入

                    // 當(dāng)proc代表的程序結(jié)束后,Eclipse才強(qiáng)制在控制臺(tái)不能進(jìn)行輸入


                    // Output thread.

                    // 在輸入中按下回車后取得當(dāng)前行字符(去掉傳進(jìn)來(lái)的,只取輸入的部分),然后轉(zhuǎn)對(duì)方.

                    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();

                }

            }


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

            // 執(zhí)行方法:

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

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

            2. 在終端里執(zhí)行: java Terminal

            3. 看終端里的提示進(jìn)行操作

            posted on 2010-05-20 01:34 逛奔的蝸牛 閱讀(2263) 評(píng)論(0)  編輯 收藏 引用 所屬分類: Java
            国产精品美女久久久网AV| 欧美一级久久久久久久大| 日本精品久久久久影院日本 | 999久久久无码国产精品| 99久久综合国产精品免费| 欧美伊人久久大香线蕉综合| 久久天天躁狠狠躁夜夜2020| 久久婷婷人人澡人人| 欧美激情精品久久久久久| 免费一级欧美大片久久网| 婷婷久久综合| 狠狠色狠狠色综合久久| 久久青青草原亚洲av无码app| 无码人妻久久一区二区三区免费| 99久久精品免费看国产一区二区三区 | 色婷婷综合久久久久中文一区二区| 久久亚洲国产午夜精品理论片| 国产精品久久国产精麻豆99网站| 国产精品天天影视久久综合网| 94久久国产乱子伦精品免费| 久久国产成人亚洲精品影院| 2021国产精品久久精品| 久久天天躁狠狠躁夜夜avapp| 久久精品国产影库免费看| 国产午夜福利精品久久| 性做久久久久久免费观看| 亚洲乱码精品久久久久..| 久久精品国产精品青草| 一本久久免费视频| 日本强好片久久久久久AAA| 国产激情久久久久影院老熟女免费| 午夜福利91久久福利| 国产69精品久久久久777| 久久久高清免费视频| 亚洲AV无码久久精品蜜桃| segui久久国产精品| 国产偷久久久精品专区| 韩国三级中文字幕hd久久精品 | 精品久久久久久中文字幕人妻最新 | 亚洲日本va中文字幕久久| 国产精品久久久久影院嫩草|