I/O为input(输入)/ output(输出)的简称,在Java中input和output代表将数据从其他地方写入程序例如从文件中读取文件,将文件内容保存在程序内存中,output代表程序将数据输出到某些地方,例如利用程序向文件中保存内容等,在Linux系统中,有一切皆文件的概念,不管对于任何文件,设备,网络设备等,在Linux下都被当做文件来进行处理;
在Java中IO操作是很重要的一块内容,从数据的传输方式来区分的话,可以分为字符流和字节流;这两者的主要区别在于数据流当中数据的最小单元,字节流代表读取数据的最小单位是字节,读取的时候可以一个字节一个字节的获取内容;字符流代表的是读取内容的时候是按照一个字符一个字符的读取;一个字符根据编码格式的不同,可能会包含多个字节,比如我们通常使用的utf-8的编码格式,在程序读取处理数据的时候,会根据编码格式从指定的编码表中获取到数据的字节数,然后再去获取指定字节大小的数据;在一般我们处理数据的时候,如果是处理文本类数据,可以优先考虑使用字符流,如果处理其他类型的数据,比如图像,视频等使用字节流进行处理;
从java源码中我们可以看到字节流的处理是以InputStream和OutputStream两个为基类,派生出很多的子类进行数据的处理,字符流的处理是以Reader和Writer两个为基类,派生出其他的子类进行数据处理;
在IO操作中,根据数据的传输方向,可以区分为输入流与输出流,其中输入输出方向的参考物是以程序为标准,将数据从数据源(比如文件,网络)中读取到程序中表示输入流;程序将数据输出到其他地方(比如文件,网络)中表示输出流;输入输出都是以程序来进行参考;
在java中我们可以根据类的命名区分出处理的是输入流还是输出流:InputStream和Reader及其子类代表的输入流的操作,OutputStream和Writer及其子类代表的是输出流的操作;
在java中除了这些操作上述的基本类之外,java还提供了处理文件的类File,使用File类创建的对象,可以进行文件或者文件夹的创建,删除,重命名等操作。在File对象中,包含了文件的基本属性,比如文件名,文件路径,文件大小,修改时间等;