java 21 - 11 IO流的标准输入流和标准输出流

标准输入输出流
  System类中的两个成员变量:
    public static final InputStream in “标准”输入流。
    public static final PrintStream out “标准”输出流。

    pnputStream is = System.in;
    printStream ps = System.out;

System.out; 标准输出流:

其实从上面就可以看出来了

        System.out.println("helloworld");

其实等于

        PrintStream ps = System.out;
        ps.println("helloworld");

注意:  

1 PrintStream ps = System.out;
2 //下面这两种方法,其实是一种方法是不存在的,注:()内没东西。
3 ps.print();
4 System.out.print();

来玩个有意思的东西:

如何让字节流变为字符流进行操作呢?

我们可以通过转换流来玩,字节流→转换流→字符流

 1     public static void main(String[] args) throws IOException {
 2                 // 获取标准输入流
 3                 // // PrintStream ps = System.out;
 4                 // // OutputStream os = ps;
 5                 // OutputStream os = System.out; // 多态
 6                 // // 我们用字符流来包装字符流,表面是字符流,其实底层用的还是字节流(标准输出流)
 7                 // OutputStreamWriter osw = new OutputStreamWriter(os);
 8                 // BufferedWriter bw = new BufferedWriter(osw);
 9                 BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(
10                         System.out));
11
12                 bw.write("hello");
13                 bw.newLine();
14                 bw.write("world");
15                 bw.newLine();
16                 bw.flush();
17
18                 bw.close();
19     }

。。。麻烦要死,理解就好了吧

System.in; 标准输入流:

输入流和输出流差不多,不用介绍。下面说下一个有意思的东西:

到JDK1.7为止,有3种方式实现键盘录入:

    1、main方法的args接收参数:    

java HelloWorld hello world java

  2、Scanner (JDK1.5以后才有的)

1 Scanner sc = new Scanner(System.in);
2 String s = sc.nextLine();
3 int x = sc.nextInt();
4 ...

  那么,在JDK1.5之前,用的是这种方式:

3、通过字符缓冲流包装标准输入流实现:

 1     public static void main(String[] args) throws IOException {
 2         // //获取标准输入流
 3         // InputStream is = System.in;
 4         // 但是,这个一次只能获取一个字节。而我们想要的是一次获取一行数据
 5         // 要想实现,首先你得知道一次读取一行数据的方法是哪个呢?
 6         // readLine()
 7         // 而这个方法在BufferedReader类中,所以,我们应该创建BufferedReader的对象,但是底层还是的使用标准输入流
 8         // BufferedReader br = new BufferedReader(is);
 9         // 但是这里还是出现错误。原因是:字符缓冲流只能针对字符流操作,而InputStream是字节流,所以不能使用
10         // 要想使用的话,就只能把字节流转换为字符流,然后在通过字符缓冲流操作
11
12         // InputStreamReader isr = new InputStreamReader(is);
13         // BufferedReader br= new BufferedReader(isr); 这两句可以写作下面一句
14         BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
15
16         System.out.println("请输入一个字符串:");
17         String line = br.readLine();
18         System.out.println("你输入的字符串是:" + line);
19
20         System.out.println("请输入一个整数:");
21         // int i = Integer.parseInt(br.readLine());
22         line = br.readLine();
23         int i = Integer.parseInt(line);
24         System.out.println("你输入的整数是:" + i);
25     }

结论:。。。还是用Scanner吧

  

时间: 2024-12-23 13:44:16

java 21 - 11 IO流的标准输入流和标准输出流的相关文章

java 21 - 13 IO流之序列化和反序列化

序列化流:把对象按照流一样的方式存入文本文件或者在网络中传输.对象 -- 流数据(ObjectOutputStream) 构造方法:ObjectInputStream(InputStream in)  创建从指定 InputStream 读取的 ObjectInputStream 反序列化流:把文本文件中的流对象数据或者网络中的流对象数据还原成对象.流数据 -- 对象(ObjectInputStream) 构造方法:ObjectInputStream(InputStream in)  创建从指定

java 21 - 13 IO流之 合并流

SequenceInputStream :表示其他输入流的逻辑串联. 构造方法摘要 SequenceInputStream(Enumeration<? extends InputStream> e)           通过记住参数来初始化新创建的 SequenceInputStream,该参数必须是生成运行时类型为 InputStream 对象的 Enumeration 型参数. SequenceInputStream(InputStream s1, InputStream s2) 通过记住

java 21 - 1 IO流中的字符流概述

字节流通过读取一个byte数组的方式可以读取中文的,但是有可能出现小问题,所以,读取中文最好是用字符流. 字符流: 字符流=字节流+编码表. 编码表: 由字符及其对应的数值组成的一张表 编码表介绍: 计算机只能识别二进制数据,早期由来是电信号. 为了方便应用计算机,让它可以识别各个国家的文字. 就将各个国家的文字用数字来表示,并一一对应,形成一张表. ASCII:美国标准信息交换码. 用一个字节的7位可以表示. ISO8859-1:拉丁码表.欧洲码表 用一个字节的8位表示. GB2312:中国的

java 21 - 12 IO流的打印流

打印流 字节流打印流 PrintStream 字符打印流 PrintWriter 打印流的特点: A:只有写数据的,没有读取数据.只能操作目的地,不能操作数据源.(只能写入数据到文件中,而不能从文件中提取数据) B:可以操作任意类型的数据. C:如果启动了自动刷新,能够自动刷新. D:该流是可以直接操作文本文件的. 哪些流对象是可以直接操作文本文件的呢?  FileInputStream  FileOutputStream  FileReader  FileWriter  PrintStream

Java中的IO流总结

Java中的IO流总结 1. 流的继承关系,以及字节流和字符流. 2. 节点流FileOutputStream和FileInputStream和处理流BufferedInputStream和BufferedOutputStream.以及对应的FileOutputWriter,FileInputReader,BufferedInputReader,BufferedOutputWriter. 3. 转换流InputStreamReader和OutputStreamWriter 一:流的继承关系 字节

Java中的IO流(五)

上一篇<Java中的IO流(四)>记录了一下Properties类,此类不属于IO流,它属于集合框架.接下来说一下IO流中的其它流 一,打印流PrintStream PrintStream为其他输出流添加了功能,使它们能够方便地打印各种数据值表示形式.并且此注永远不会抛出IOException. 此流的构造函数大致分三类 1,接收File文件类型的 2,接收OutputStream类型的 3,接收文件名形式的 下演示一下此流的两个方法 1 private static void functio

Java中的IO流体系

Java为我们提供了多种多样的IO流,我们可以根据不同的功能及性能要求挑选合适的IO流,如图10-7所示,为Java中IO流类的体系. 注:这里只列出常用的类,详情可以参考JDK API文档.粗体标注为常用! 图10-7 Java中的IO流体系 从上图发现,很多流都是成对出现的,比如:FileInputStream/FileOutputStream,显然是对文件做输入和输出操作的.我们下面简单做个总结: 1. InputStream/OutputStream 字节流的抽象类. 2. Reader

Java中的IO流

Java中的IO流是实现输入/输出的基础. 按照流的方向不同:分为输入流和输出流. 按照处理数据单位的不同:分为字节流(8位)和字符流(16位). 按照功能不同:分为节点流和处理流 所有面向字节的流类都继承于InputStream类(输入流) 或OutputStream类(输出流),这两个类是抽象类,我们可以利用它的子类来完成不同的功能. InputStream.OutputStream都是抽象类 InputStream抽象了应用程序读取数据的方式 OutputStream抽象类应用程序写出数据

JAVA 中的IO流

Java中的IO流是用来处理设备与设备之前的数据传输,在java中以流的形式传输.流分为两类:字节流和字符流. 字节流:InputStream,OutPutSteam.(计算机内的数据都是以字节存储的,字节流可以操作任意数据) 字符流:Reader,Writer.(字符流只能操作字符,但是在实际应用中字符流比较方便) 从操作来看又可以分为:输入流和输出流. 在进行IO流操作的时候分为以下几步:1.导入IO流的包,2.进行IO流的异常处理,3.关闭IO流释放资源. 字节流 ————————————