国产探花免费观看_亚洲丰满少妇自慰呻吟_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教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 肃南| 昭平县| 万山特区| 永善县| 刚察县| 柳州市| 孙吴县| 阿城市| 宁海县| 永泰县| 宽甸| 清水县| 华亭县| 大余县| 固安县| 霍林郭勒市| 罗源县| 邢台县| 金昌市| 原阳县| 乌什县| 崇州市| 天门市| 正安县| 古交市| 英吉沙县| 安宁市| 天等县| 广河县| 鄂托克前旗| 红安县| 绥江县| 额敏县| 锦屏县| 轮台县| 新田县| 定远县| 鄂伦春自治旗| 睢宁县| 张掖市| 安顺市|