最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

重新認(rèn)識(shí)Java的System.in

 更新時(shí)間:2018年12月26日 10:09:02   作者:isea533  
今天小編就為大家分享一篇關(guān)于重新認(rèn)識(shí)Java的System.in,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧

重新認(rèn)識(shí) Java 的 System.in

以前也寫(xiě)過(guò)不少命令行的程序,處理文件時(shí)總需要通過(guò)參數(shù)指定路徑,直到今天看資料時(shí)發(fā)現(xiàn)了一種我自己從來(lái)沒(méi)用過(guò)的方式。這種方式讓我重新認(rèn)識(shí)了System.in。

下面是一個(gè)簡(jiǎn)單的Cat 命令的例子,這里提供了-n參數(shù)用于配置是否顯示行號(hào)。

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 {
    //是否顯示行號(hào),使用參數(shù) -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();
    }
  }
}

這個(gè)方法中用到了參數(shù),參數(shù)只用于判斷是否存在-n這個(gè)參數(shù),沒(méi)有通過(guò)參數(shù)指定文件。

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

就是通過(guò)輸入重定向到命令。針對(duì)上面的 Cat.java 文件執(zhí)行下面的命令:

javac Cat.java
java Cat -n < Cat.java

先使用 javac 編譯,在通過(guò) java 命令執(zhí)行,通過(guò)輸入重定向?qū)at.java 作為命令的輸入流。

上面命令執(zhí)行后,輸出內(nèi)容如下:

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

如果只是處理文件,和參數(shù)方式指定文件路徑?jīng)]太大的區(qū)別。但是如果通過(guò)管道方式,就可以很方便的將前面命令的輸出流作為輸入流繼續(xù)進(jìn)行處理。例如下面的命令:

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

前一個(gè)命令的輸出會(huì)作為第二個(gè)命令的輸入,這會(huì)在原有行號(hào)的基礎(chǔ)上增加一個(gè)行號(hào),結(jié)果如下:

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

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

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接

相關(guān)文章

  • Spring?Boot自動(dòng)配置源碼實(shí)例解析

    Spring?Boot自動(dòng)配置源碼實(shí)例解析

    Spring Boot作為Java領(lǐng)域最為流行的快速開(kāi)發(fā)框架之一,其核心特性之一就是其強(qiáng)大的自動(dòng)配置機(jī)制,下面這篇文章主要給大家介紹了關(guān)于Spring?Boot自動(dòng)配置源碼的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-08-08
  • 淺析MMAP零拷貝在RocketMQ中的運(yùn)用

    淺析MMAP零拷貝在RocketMQ中的運(yùn)用

    零拷貝技術(shù)可以減少數(shù)據(jù)拷貝和共享總線操作的次數(shù),消除傳輸數(shù)據(jù)在存儲(chǔ)器之間不必要的中間拷貝次數(shù),從而有效地提高數(shù)據(jù)傳輸效率,這篇文章主要介紹了MMAP零拷貝在RocketMQ中的運(yùn)用,需要的朋友可以參考下
    2022-07-07
  • Java后端接入微信小程序登錄功能(登錄流程)

    Java后端接入微信小程序登錄功能(登錄流程)

    這篇文章主要介紹了Java后端接入微信小程序登錄功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-06-06
  • java常見(jiàn)面試題及答案匯總

    java常見(jiàn)面試題及答案匯總

    本文提供Java面試題集錦,涵蓋封裝、繼承、多態(tài)等核心概念,旨在幫助求職者全面復(fù)習(xí),提升面試表現(xiàn),從基礎(chǔ)知識(shí)到實(shí)際應(yīng)用,內(nèi)容豐富,適合各類求職者,需要的朋友可以參考下
    2024-09-09
  • Java字母加數(shù)字組合比較大小

    Java字母加數(shù)字組合比較大小

    這篇文章主要通過(guò)實(shí)現(xiàn)Comarable接口來(lái)比較(如"a20"和"a9"這種)字符串的大小,希望能給大家做一個(gè)參考。
    2016-06-06
  • IDEA實(shí)現(xiàn)添加 前進(jìn)后退 到工具欄的操作

    IDEA實(shí)現(xiàn)添加 前進(jìn)后退 到工具欄的操作

    這篇文章主要介紹了IDEA 前進(jìn) 后退 添加到工具欄的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-02-02
  • Java處理科學(xué)計(jì)數(shù)法數(shù)字方式

    Java處理科學(xué)計(jì)數(shù)法數(shù)字方式

    這篇文章主要介紹了Java處理科學(xué)計(jì)數(shù)法數(shù)字方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • Springboot如何操作redis數(shù)據(jù)

    Springboot如何操作redis數(shù)據(jù)

    這篇文章主要介紹了Springboot如何操作redis數(shù)據(jù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • Java實(shí)現(xiàn)FTP文件上傳

    Java實(shí)現(xiàn)FTP文件上傳

    FTP 是File Transfer Protocol(文件傳輸協(xié)議)的英文簡(jiǎn)稱,而中文簡(jiǎn)稱為“文傳協(xié)議”。用于Internet上的控制文件的雙向傳輸。本文將講解如何用Java實(shí)現(xiàn)FTP文件上傳
    2021-05-05
  • Java枚舉類型在switch語(yǔ)句正確使用方法詳解

    Java枚舉類型在switch語(yǔ)句正確使用方法詳解

    這篇文章主要介紹了Java枚舉類型在switch語(yǔ)句正確使用方法詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07

最新評(píng)論

乐山市| 北京市| 驻马店市| 扶余县| 嵩明县| 鸡泽县| 吉安市| 中方县| 曲靖市| 玉山县| 临沂市| 始兴县| 威信县| 昭觉县| 武隆县| 绥宁县| 惠州市| 富宁县| 凯里市| 云阳县| 乡宁县| 西宁市| 天镇县| 巴里| 邵东县| 乐陵市| 农安县| 宁晋县| 赤城县| 渭南市| 梁平县| 班戈县| 桑植县| 晋中市| 嵊州市| 乌鲁木齐县| 永年县| 丹寨县| 洛南县| 山东| 伊川县|