標準輸入輸出流、數據流、打印流

import org.junit.Test;

import java.io.*;
import java.util.Scanner;

/*
* 其他流的使用
* 1.標準的輸入,輸出流
* 2.打印流
* 3.數據流
*
* */
public class OtherStreamTest {

    /*
    * 1.標準的輸入、輸出流
    * 1.1
    * System.in:標準輸入流,默認從鍵盤輸入
    * System.out:標準輸出流,默認從控制檯輸出
    *1.2
    * System類的setIn(InputStream is)/setOut(PrintStream ps)方式來重新指定輸入和輸出的默認值
    * */

    @Test
    /*
    * 題目:從鍵盤輸入字符串,要求將讀到的整行字符串轉換成大寫輸出,然後繼續進行輸入的操作,
    * 知道輸入“e”或者“exit”時,退出程序
    * 方法一:使用scanner。調用next()返回一個字符串
    * 方法二:使用System.in實現,System.in---->轉換流----->BufferReader的readLine()
    * */
    public void test1() throws IOException {
        InputStream in = System.in;
        InputStreamReader inputStreamReader = new InputStreamReader(in);//Reader
        BufferedReader bufferedReader = new BufferedReader(inputStreamReader);

        while (true){
            System.out.println("請輸入字符:");
            String data=bufferedReader.readLine();
            if("e".equalsIgnoreCase(data)||"exit".equalsIgnoreCase(data)){
                System.out.println("程序結束!");
                break;
            }else{
                String str=data.toUpperCase();
                System.out.println(str);
            }
        }

    }

    @Test
    public void test2(){
        //方法二
        while (true){
            System.out.println("請輸入字符:");
            Scanner in=new Scanner(System.in);
            String str=in.nextLine();
            if("e".equalsIgnoreCase(str)||"exit".equalsIgnoreCase(str)){
                System.out.println("程序結束!!!");
                break;

            }else{
                String str2=str.toUpperCase();
                System.out.println(str2);

            }
        }
    }

    /*
    2.打印流:printStream和printWriter
    2.1:提供了一系列的重載的print()和println()
    2.2練習:輸出0-255Ascll碼到文件(標準輸出流的)

     System.setOut(printStream); //設置標準輸出流從控制檯改爲printStream

    */
    @Test
    public void test3()  {
        PrintStream printStream = null;
        try {
            File file = new File("D:\\360MoveData\\Users\\Administrator\\Desktop\\亂七八糟\\文件\\OtherStream\\PrintStream.txt");
            FileOutputStream fileOutputStream = new FileOutputStream(file);
            //處理流
            printStream = new PrintStream(fileOutputStream, true);
            if(printStream!=null){
                System.setOut(printStream); //設置標準輸出流從控制檯改爲printStream

            }

            for (int i = 0; i <= 255; i++) {        //輸出ASCll碼值
                System.out.print((char) i);
                //50個換行
                if(i%50==0){
                    System.out.println();
                }

            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } finally {
            if(printStream!=null){
                printStream.close();
            }

        }


    }


    /*
    3.數據流
    3.1:DataInputStream和DataOutputStream
    3.2作用:用於讀取或者寫入基本數據類型的變量和字符串
    練習:將內存中的字符串,基本數據類型變量寫出到文件中

    注意:處理異常還應該用try-catch-finally
    */
    @Test
    public void test4() throws Exception {
        DataOutputStream dataOutputStream = new DataOutputStream(new FileOutputStream(new File("D:\\360MoveData\\Users\\Administrator\\Desktop\\亂七八糟\\文件\\OtherStream\\data.txt")));

        dataOutputStream.writeUTF("李瀟瀟");
        dataOutputStream.flush();
        dataOutputStream.writeInt(21);
        dataOutputStream.flush();
        dataOutputStream.writeBoolean(true);
        dataOutputStream.flush();

        dataOutputStream.close();


    }

/*
* 將寫入到文件中的基本數據類型或者String讀取到內存,輸出到控制檯
* DataInputStream-----> read
* 注意:在讀取的時候,順序必須要和存的順序一樣,否則會拋異常
* */

    @Test
    public void test5()throws  Exception{
        //1
        DataInputStream dis = new DataInputStream(new FileInputStream(new File("D:\\360MoveData\\Users\\Administrator\\Desktop\\亂七八糟\\文件\\OtherStream\\data.txt")));
        //2
        String s = dis.readUTF();
        int i = dis.readInt();
        boolean b = dis.readBoolean();
        System.out.println("name="+s+"age="+i+"isMale"+b);
        //3
        dis.close();


    }
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章