麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發 > Java > 正文

重新認識Java的System.in

2024-07-14 08:43:21
字體:
來源:轉載
供稿:網友

重新認識 Java 的 System.in

以前也寫過不少命令行的程序,處理文件時總需要通過參數指定路徑,直到今天看資料時發現了一種我自己從來沒用過的方式。這種方式讓我重新認識了System.in。

下面是一個簡單的Cat 命令的例子,這里提供了-n參數用于配置是否顯示行號。

import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.Arrays;public class Cat {  public static void main(String[] args) throws IOException {    //是否顯示行號,使用參數 -n 啟用    boolean showNumber = args.length > 0 && Arrays.asList(args).contains("-n");    int num = 0;    BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));    String line = reader.readLine();    while (line != null) {      if (showNumber) {        num++;        System.out.printf("%1$8s %2$s%n", num, line);      } else {        System.out.println(line);      }      line = reader.readLine();    }  }}

這個方法中用到了參數,參數只用于判斷是否存在-n這個參數,沒有通過參數指定文件。

這里獲取文件內容的方式就是 System.in,從輸入流中讀取。輸入流中怎么提供文件內容呢?

就是通過輸入重定向到命令。針對上面的 Cat.java 文件執行下面的命令:

javac Cat.javajava Cat -n < Cat.java

先使用 javac 編譯,在通過 java 命令執行,通過輸入重定向將Cat.java 作為命令的輸入流。

上面命令執行后,輸出內容如下:

 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; public class Cat {   public static void main(String[] args) throws IOException {     boolean showNumber = args.length > 0 && Arrays.asList(args).contains("-n");     int num = 0;     BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));     String line = reader.readLine();     while (line != null) {       if (showNumber) {         num++;         System.out.printf("%1$8s %2$s%n", num, line);       } else {         System.out.println(line);       }       line = reader.readLine();     }   } }

如果只是處理文件,和參數方式指定文件路徑沒太大的區別。但是如果通過管道方式,就可以很方便的將前面命令的輸出流作為輸入流繼續進行處理。例如下面的命令:

java Cat -n < Cat.java | java Cat -n

前一個命令的輸出會作為第二個命令的輸入,這會在原有行號的基礎上增加一個行號,結果如下:

 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; public class Cat {   public static void main(String[] args) throws IOException {     boolean showNumber = args.length > 0 && Arrays.asList(args).contains("-n");     int num = 0;     BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));     String line = reader.readLine();     while (line != null) {       if (showNumber) {        num++;         System.out.printf("%1$8s %2$s%n", num, line);       } else {         System.out.println(line);       }       line = reader.readLine();     }   } }

合理使用這種方式可以在某些情況下起到良好的作用。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對VeVb武林網的支持。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产永久免费观看 | 欧美成视频在线观看 | 国产一级毛片视频在线! | 青青草华人在线 | 一级做受毛片免费大片 | 久色婷婷| 精品一区二区三区日本 | 日韩视频一区二区三区在线观看 | 福利在线免费视频 | 国产精品久久久久久久久久东京 | 91精品久久久久久久 | 欧美激情在线播放 | 成人毛片网 | 精品一区二区三区日本 | 中文字幕在线成人 | 91精品免费观看 | 午夜精品老牛av一区二区三区 | 成人在线视频免费看 | 国产手机国产手机在线 | 欧美乱淫 | h视频在线观看免费 | 国产精品久久久久久久av | 色猫av | 日韩黄色片免费看 | 久草在线精品观看 | h视频免费看 | 九九热国产视频 | 亚洲性综合网 | 国产精品久久久久久一区二区三区 | 亚洲特黄 | 92看片淫黄大片一级 | 精品国产一区二区三区在线观看 | 粉嫩av一区二区三区四区在线观看 | 亚洲国产精品久久久久久久久 | 精品国产视频一区二区三区 | 电影av在线| 国产精品久久久久久久久久久久久久久 | 成人在线免费视频观看 | 久久精品欧美一区二区三区不卡 | 亚洲91网站 | 日本aaaa片毛片免费观看视频 |