国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 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教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 昌都县| 灵石县| 文昌市| 陵川县| 吉首市| 柘城县| 乌兰浩特市| 富裕县| 彰武县| 福贡县| 正蓝旗| 浦江县| 乐昌市| 玛曲县| 长白| 临城县| 辽阳县| 漳平市| 道孚县| 宜阳县| 云安县| 龙泉市| 潼关县| 临朐县| 罗甸县| 广水市| 辉南县| 博爱县| 白银市| 广东省| 浏阳市| 上蔡县| 奎屯市| 阳城县| 罗城| 武邑县| 陆川县| 虎林市| 乐山市| 徐汇区| 沅陵县|