java.io概述

Java的核心库java.io提供了全面的IO接口。包括:文件读写、标准设备输出等。Java中IO是以流为基础进行输入输出的,所有数据被串行化写入输出流,或者从输入流读入。

java.io的描述

通过数据流、序列化和文件系统提供系统输入和输出。

流的概念

流是一个很形象的概念,当程序需要读取数据的时候,就会开启一个通向数据源的流,这个数据源可以是文件,内存,或是网络连接。类似的,当程序需要写入数据的时候,就会开启一个通向目的地的流。这时候你就可以想象数据好像在这其中“流”动一样。

Java流的分类

按流向分:
输入流: 程序可以从中读取数据的流。
输出流: 程序能向其中写入数据的流。
按数据传输单位分:
字节流: 以字节为单位传输数据的流
字符流: 以字符为单位传输数据的流
按功能分:
节点流: 用于直接操作目标设备的流
过滤流: 是对一个已存在的流的链接和封装,通过对数据进行处理为程序提供功能强大、灵活的读写功能。

java.io常用类

JDK所提供的所有流类位于java.io包中,都分别继承自以下四种抽象流类。
InputStream:继承自InputStream的流都是用于向程序中输入数据的,且数据单位都是字节(8位)。
OutputStream:继承自OutputStream的流都是程序用于向外输出数据的,且数据单位都是字节(8位)。
Reader:继承自Reader的流都是用于向程序中输入数据的,且数据单位都是字符(16位)。
Writer:继承自Writer的流都是程序用于向外输出数据的,且数据单位都是字符(16位)。

io字节流读、写

io字节流写

File f = new File("c:/ccc.txt");
		FileOutputStream os;
		try {
			os = new FileOutputStream(f);
			byte[] b = {99, 98, 97};
			os.write(b);
			os.close();
		} catch (Exception e) {
			e.printStackTrace();
		}

C:\

Java ISO控制字符_java


打开ccc.txt,里面内容:

Java ISO控制字符_字符流_02


io字节流读:

File f = new File("C:/ccc.txt");
		try {
			FileInputStream is = new FileInputStream(f);
			byte[] bb = new byte[(int)f.length()];
			is.read(bb);
			for(byte c : bb){
				System.out.println(c);
			}
			is.close();
		} catch (Exception e) {

			e.printStackTrace();
		}

结果:

99
98
97

运行截图:

Java ISO控制字符_字符流_03

字符流io读、写

字符流io写:

File f = new File("c:/ddd.txt");
		try {
			FileWriter fw = new FileWriter(f);
			char[] ch = {'q', 'w', 'e', 'r'};
			fw.write(ch);
			fw.close();
		} catch (IOException e) {
			e.printStackTrace();
		}

C:\

Java ISO控制字符_java_04


Java ISO控制字符_字符流_05


字符流io读:

File f = new File("c:/ddd.txt");
		try {
			FileReader fr = new FileReader(f);
			char[] ch = new char[(int)f.length()];
			fr.read(ch);
			for(char c : ch){
				System.out.println(c);
			}
			fr.close();
		} catch (Exception e) {
			e.printStackTrace();
		}

结果:

q
w
e
r

运行截图:

Java ISO控制字符_java_06


我的理解:

可以这样:这里的io的操作都针对程序,input、output都是针对程序,input的话,输入程序,那自然就是从文件种读,output是输出,从程序中输出,那就是写入文件。