文章目录

  • 标准输入输出流
  • System.in
  • System.out
  • 打印流
  • 数据流


标准输入输出流

System.in

System.in:标准的输入流,默认从键盘输入。

eg: 从键盘输入字符串,要求将读取到的整行字符串转成大写输出然后继续进行输入操作,直至当输入“e” 或者“exit”时,退出程序。

  • 方法一:使用Scanner实现,调用next()返回一个字符串。
  • 方法二:使用System.in实现。system.in返回值是一个字节流,然后通过转换流转成字符流,在使用缓冲流BufferedReader 中的 readLine()方法,从控制台读取一行数据。

方法二示例代码:

public static void main(String[] args) {
        BufferedReader bufferedReader = null;
        try {
            System.out.println("请输入字符串:");
            InputStreamReader inputStreamReader = new InputStreamReader(System.in);
            bufferedReader = new BufferedReader(inputStreamReader);
            String data;
            while(true){
                data = bufferedReader.readLine();
                if("e".equalsIgnoreCase(data) || "exit".equalsIgnoreCase(data)){
                    System.out.println("程序结束");
                    break;
                }
                String upper = data.toUpperCase();
                System.out.println(upper);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            try {
                if(bufferedReader != null) bufferedReader.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

执行结果:

java输入流输入什么表示eof java 标准输入流_java

注:如果使用idea的话不要用单元测试,使用main方法,不然的话不能从键盘读值。

System.out

System.out:标准的输出流,默认从控制台输出。
返回的是一个PrintStream的打印流,详情请往下看

打印流

打印流:PrintStreamPrintWriter 提供了一系列重载的print()println() 示例代码:

@Test
    public void test(){
        PrintStream ps = null;
        try {
            FileOutputStream fileOutputStream = new FileOutputStream(new File("hello.txt"));
            //创建打印输出流,  设置自动刷新模式(写入换行或者字节‘\n’时都会刷新缓存区)
            ps = new PrintStream(fileOutputStream, true);

            if(ps != null){//把标准的输出流(控制台输出),改成文件输出
                System.setOut(ps);
            }

            for(int i = 0; i <= 255; ++i){//输出ASCII字符
                System.out.print((char) i);
                if(i % 50 == 0){//每50个数据换一行
                    System.out.println();
                }
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }finally {
            ps.close();
        }
    }

数据流

数据流包括:DateInputStreamDateOutputStream 使用数据流可以更方便的操作Java语言的基本数据类型和String的数据。
作用:用于读取或者写入基本数据类型的变量或者字符串。

将内存中的字符串,基本数据类型变量写出到文件。

@Test
    public void test2(){
        DataOutputStream dataOutputStream = null;
        try {
            dataOutputStream = new DataOutputStream(new FileOutputStream("hello.txt"));
            dataOutputStream.writeUTF("旺财");
            dataOutputStream.flush();//手动的刷新一下,将内存中已有的数据写入文件。
            dataOutputStream.writeInt(3);
            dataOutputStream.flush();
            dataOutputStream.writeBoolean(true);
            dataOutputStream.flush();
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            try {
                if(dataOutputStream != null) dataOutputStream.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

将文件中存储的基本数据类型变量和字符串读取到内存中
  注:读取的顺序不能乱来,要按照写入的顺序和类型来。

@Test
    public void test3(){
        DataInputStream dataInputStream = null;
        try {
            dataInputStream = new DataInputStream(new FileInputStream("hello.txt"));
            //读取的顺序不能乱来,要按照写入的顺序和类型来。
            System.out.println(dataInputStream.readUTF());
            System.out.println(dataInputStream.readInt());
            System.out.println(dataInputStream.readBoolean());
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            try {
                if(dataInputStream != null) dataInputStream.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

    }

结果演示:

java输入流输入什么表示eof java 标准输入流_输出流_02