国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Java? 教程(命令行I/O)

jeyhan / 3265人閱讀

命令行I/O

程序通常從命令行運(yùn)行,并在命令行環(huán)境中與用戶交互,Java平臺以兩種方式支持這種交互:通過標(biāo)準(zhǔn)流和控制臺。

標(biāo)準(zhǔn)流

標(biāo)準(zhǔn)流是許多操作系統(tǒng)的一個特性,默認(rèn)情況下,它們從鍵盤讀取輸入并將輸出寫入顯示器,它們還支持文件和程序之間的I/O,但該功能由命令行解釋器控制,而不是程序。

Java平臺支持三種標(biāo)準(zhǔn)流:標(biāo)準(zhǔn)輸入,可通過System.in訪問;標(biāo)準(zhǔn)輸出,可通過System.out訪問;和標(biāo)準(zhǔn)錯誤,通過System.err訪問。這些對象是自動定義的,不需要打開,標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯誤均用于輸出,多帶帶具有錯誤輸出允許用戶將常規(guī)輸出轉(zhuǎn)移到文件并仍然能夠讀取錯誤消息,有關(guān)更多信息,請參閱命令行解釋程序的文檔。

你可能希望標(biāo)準(zhǔn)流是字符流,但由于歷史原因,它們是字節(jié)流,System.outSystem.err定義為PrintStream對象,雖然從技術(shù)上講它是字節(jié)流,但PrintStream利用內(nèi)部字符流對象來模擬字符流的許多功能。

相比之下,System.in是一個沒有字符流功能的字節(jié)流,要將標(biāo)準(zhǔn)輸入用作字符流,請?jiān)?b>InputStreamReader中包裝System.in

InputStreamReader cin = new InputStreamReader(System.in);
控制臺

控制臺是標(biāo)準(zhǔn)流的更高級替代方案,這是一個類型為Console的多帶帶、預(yù)定義的對象,它具有標(biāo)準(zhǔn)流提供的大部分功能,以及其他功能。控制臺對于安全密碼輸入特別有用,Console對象還通過其readerwriter方法提供真正的字符流的輸入和輸出流。

在程序可以使用控制臺之前,它必須通過調(diào)用System.console()來嘗試檢索Console對象,如果Console對象可用,則此方法將返回該對象,如果System.console返回NULL,則不允許使用Console操作,因?yàn)椴僮飨到y(tǒng)不支持它們,或者因?yàn)槌绦蚴窃诜墙换ナ江h(huán)境中啟動的。

Console對象通過其readPassword方法支持安全密碼輸入,此方法有助于以兩種方式保護(hù)密碼輸入,首先,它抑制回顯,因此密碼在用戶屏幕上不可見,其次,readPassword返回一個字符數(shù)組,而不是String,因此密碼可以被覆蓋,一旦不再需要就將其從內(nèi)存中刪除。

Password示例是用于更改用戶密碼的原型程序,它演示了幾種Console方法。

import java.io.Console;
import java.util.Arrays;
import java.io.IOException;

public class Password {
    
    public static void main (String args[]) throws IOException {

        Console c = System.console();
        if (c == null) {
            System.err.println("No console.");
            System.exit(1);
        }

        String login = c.readLine("Enter your login: ");
        char [] oldPassword = c.readPassword("Enter your old password: ");

        if (verify(login, oldPassword)) {
            boolean noMatch;
            do {
                char [] newPassword1 = c.readPassword("Enter your new password: ");
                char [] newPassword2 = c.readPassword("Enter new password again: ");
                noMatch = ! Arrays.equals(newPassword1, newPassword2);
                if (noMatch) {
                    c.format("Passwords don"t match. Try again.%n");
                } else {
                    change(login, newPassword1);
                    c.format("Password for %s changed.%n", login);
                }
                Arrays.fill(newPassword1, " ");
                Arrays.fill(newPassword2, " ");
            } while (noMatch);
        }

        Arrays.fill(oldPassword, " ");
    }
    
    // Dummy change method.
    static boolean verify(String login, char[] password) {
        // This method always returns
        // true in this example.
        // Modify this method to verify
        // password according to your rules.
        return true;
    }

    // Dummy change method.
    static void change(String login, char[] password) {
        // Modify this method to change
        // password according to your rules.
    }
}

Password類遵循以下步驟:

嘗試檢索Console對象,如果對象不可用,則中止。

調(diào)用Console.readLine以提示并讀取用戶的登錄名。

調(diào)用Console.readPassword以提示并讀取用戶的現(xiàn)有密碼。

調(diào)用verify以確認(rèn)用戶有權(quán)更改密碼(在此示例中,verify是一個始終返回true的虛方法)。

重復(fù)以下步驟,直到用戶輸入兩次相同的密碼:

調(diào)用Console.readPassword兩次以提示并讀取新密碼。

如果用戶兩次都輸入相同的密碼,請調(diào)用change以進(jìn)行更改(同樣,change是一種虛擬方法)。

用空格覆蓋這兩個密碼。

用空格覆蓋舊密碼。

上一篇:格式化流 下一篇:數(shù)據(jù)流

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/72962.html

相關(guān)文章

  • Java? 教程(系統(tǒng)實(shí)用工具)

    系統(tǒng)實(shí)用工具 System類實(shí)現(xiàn)了許多系統(tǒng)實(shí)用程序,其中一些已在上一節(jié)配置實(shí)用程序中介紹過,本節(jié)介紹一些其他系統(tǒng)實(shí)用程序。 命令行I/O對象 系統(tǒng)提供了幾個預(yù)定義的I/O對象,這些對象在Java應(yīng)用程序中非常有用,可以從命令行啟動,它們實(shí)現(xiàn)了大多數(shù)操作系統(tǒng)提供的標(biāo)準(zhǔn)I/O流,以及用于輸入密碼的控制臺對象,有關(guān)更多信息,請參閱基礎(chǔ)I/O課程中的命令行I/O。 系統(tǒng)屬性 在屬性中,我們研究了應(yīng)用程序可...

    leonardofed 評論0 收藏0
  • Java? 教程(字符流)

    字符流 Java平臺使用Unicode約定存儲字符值,字符流I/O自動將此內(nèi)部格式與本地字符集進(jìn)行轉(zhuǎn)換,在Western語言環(huán)境中,本地字符集通常是ASCII的8位超集。 對于大多數(shù)應(yīng)用程序,具有字符流的I/O并不比具有字節(jié)流的I/O復(fù)雜,使用流類完成的輸入和輸出會自動轉(zhuǎn)換為本地字符集和從本地字符集轉(zhuǎn)換,使用字符流代替字節(jié)流的程序會自動適應(yīng)本地字符集并為國際化做了準(zhǔn)備 — 所有這些都無需程序員的額...

    mochixuan 評論0 收藏0
  • Java? 教程(配置實(shí)用工具)

    配置實(shí)用工具 本節(jié)介紹一些幫助應(yīng)用程序訪問其啟動上下文的配置實(shí)用程序。 屬性 Properties是作為鍵/值對管理的配置值,在每對中,鍵和值都是字符串值,鍵標(biāo)識并用于檢索值,就像變量名用于檢索變量的值一樣。例如,能夠下載文件的應(yīng)用程序可能使用名為download.lastDirectory的屬性來跟蹤上次下載所使用的目錄。 要管理屬性,請創(chuàng)建java.util.Properties的實(shí)例,此類提...

    yhaolpz 評論0 收藏0
  • Java? 教程(目錄)

    Java? 教程 Java教程是為JDK 8編寫的,本頁面中描述的示例和實(shí)踐沒有利用在后續(xù)版本中引入的改進(jìn)。 Java教程是希望使用Java編程語言創(chuàng)建應(yīng)用程序的程序員的實(shí)用指南,其中包括數(shù)百個完整的工作示例和數(shù)十個課程,相關(guān)課程組被組織成教程。 覆蓋基礎(chǔ)知識的路徑 這些教程以書籍的形式提供,如Java教程,第六版,前往Amazon.com購買。 入門 介紹Java技術(shù)和安裝Java開發(fā)軟件并使用...

    lifesimple 評論0 收藏0
  • Java? 教程(數(shù)據(jù)流)

    數(shù)據(jù)流 數(shù)據(jù)流支持原始數(shù)據(jù)類型值(boolean、char、byte、short、int、long、float和double)以及String值的二進(jìn)制I/O,所有數(shù)據(jù)流都實(shí)現(xiàn)DataInput接口或DataOutput接口,本節(jié)重點(diǎn)介紹這些接口最廣泛使用的實(shí)現(xiàn),DataInputStream和DataOutputStream。 DataStreams示例通過寫出一組數(shù)據(jù)記錄,然后再次讀取它們來演...

    wujl596 評論0 收藏0

發(fā)表評論

0條評論

jeyhan

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<