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:\
打开ccc.txt,里面内容:
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
运行截图:
字符流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:\
字符流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
运行截图:
我的理解:
可以这样:这里的io的操作都针对程序,input、output都是针对程序,input的话,输入程序,那自然就是从文件种读,output是输出,从程序中输出,那就是写入文件。