javaIO流

IO流

IO为java的基于流,流(Stream)产生或使用信息的抽象。

最常见的流就是System.out它是典型的输出流。

预定义流:

当然除了IO流,还有以种流叫做预定义流由System实现,包括三个预定义流变量,变量名为 in,out和err

System.out 为标准的输出流,默认情况下为控制台。

System.in 为标准的输入流,默认情况为键盘。

System.err 为标准的错误流,默认情况为控制台。

想必前两种小伙伴们很熟悉吧,但是什么是错误了流呢?

这个就要区分它们的类型,System.in是InputStream类型的对象,而System.out 和 System.err是PrintStream的对象。

import java.io.*;
public class IOTest01 { // read an array of bytes from the keyboard .
    public static void main(String []args) throws IOException{
            byte data [] = new byte[10];
            System.out.println("Enter some characters.");
            System.in.read(data);
            System.out.println("You Enter :");
            for(int i =0;i<data.length;i++){
                System.out.print((char)data[i]);
            }
        System.err.println("ff");
        }
    }
/*
Enter some characters.
I Love you
You Enter :
I Love youff

*/
//输出结果是这样,同为输出,它们有什么区别呢?
  //  Sun公司给与的回答:
    err的定义:
          public static final PrintStream err = null;
   out的定义 :
          public static final PrintStream out = null;
/**
* 乍一看,这两个的定义不都一样的吗?有啥区别 都是为空,在IDE上
* 面由err输出的是带红色字体,而out输出的白色字体。
* 难道只是字体的颜色有区别吗?
哈哈: 来看一下sun公司人的解释:
     * The "standard" error output stream. This stream is already
     * open and ready to accept output data.
     * <p>
     * Typically this stream corresponds to display output or another
     * output destination specified by the host environment or user. By
     * convention, this output stream is used to display error messages
     * or other information that should come to the immediate attention
     * of a user even if the principal output stream, the value of the
     * variable {@code out}, has been redirected to a file or other
     * destination that is typically not continuously monitored.
     */
// 看完之后,以我目前的能力无法理解。

字节流:

什么是字节,就是一个字符串一个字符串的读取,可以读取任何形式的文件,如图片,音频,视频。

而字符流只能读取文本文件,也就是.txt文件。

涉及到的是两个顶端的抽象类,InputStream,和OutputStream。主要是定义规范

// 大型搜索
public abstract class InputStream implements Closeable {
    
}
public class FilterInputStream extends InputStream{
    
}
public class BufferedInputStream extends FilterInputStream {
    
}
// 在Java.io包中有很多类,这些类的方法有很多,有关io的字节流类如下
字节流含义
BufferredInputStream输入缓冲流
BufferedOutputStream输出流缓冲
ByteArrayInputStream从字节数组读取的输入流
ByteArrayOutputStream写入字节数组的输出流
DataInputStream包含用于读取Java标准数据类型方法的输入流
DataOutputStream包含用于写入Java数据类型的输出流
FileInputStream从文件读取的输入流
FileOutputStream写入文件都输出流
FilterInputStream实现InputStream
FilterOutputStream实现OuterputStream
ObjectInputStream对象的输入流
ObjectOutputStream对象的输出流
PipedInputStream输入管道
PipedOutputStream输出管道
PrintStream包含print()和println()流
PushbackInputStream允许字节反回到流的输入流
SequenceInputStream一个,两个或者多个输入流的组合,逐个读取
InputStream描叙流输入的抽象类
OutputStream描叙输出的抽象类

观察以上类名凡是带有input为输入,output为输出。

那在计算机中什么是输入输出呢?

输入:往内存中读入硬盘上的数据 (read)

输出:从内存中往硬盘写入数据(write)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

“逢雨”

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值