I/O 操作的基本目标
从数据源当中读取数据,以及将数据写入到数据目的地当中。数据源不是硬盘上的文件,数据的目的地也不是硬盘。而是:【文件、键盘、网络→Java 程序→ 文件、屏幕、网络】。
要搞清楚数据的流向 ,从文件到程序是输入流,从程序到文件是输出流,搞清楚出入关系才能写对程序。
I/O 的分类方法
1、输入流和输出流;
2、字节流和字符流(每一次传输字符/字节);
3、节点流和处理流(有关Java 的处理模式)。
读取文件和写入文件的方法
一、I/O 字节流当中的核心类
InputStream 和OutputStream,这两个是抽象类,常用的子类是FileInputStream 和FileOutputStream 。
核心方法:
InputStream:
int read(byte[] b,int off,int len)
读进来的数据放在第一个参数的字节数组,第二个参数代表读入的数据的第几位开始写,第三个参数代表一次最多数据,此方法的返回值是一次读多少个数据。
1、导入类:
import java.io.*;
2、生成FileInputStream 的对象,需要导入输入文件的位置:
FileInputStream fis=new FileInputStream("【地址】");
3、生成比特类型的数组:
byte [] buffer=new byte[100];
4.调用输入流对象read 方法,读取数据:
fis.read(数组(已导入buffer),偏移量,数组长度);
5、若要将数据流还原成字符串,可用:
String s=new String(buffer);
s=s.trim();//去掉字符串首尾的空格和空字符,保证字符串正确。
OutputStream:
void write(byte[]b,int off,int len)
1、导入类:
import java.io.*;
2、生成FileOutputStream 的对象,需要导入输出文件的位置;
FileOutputStream fos=new FileOutputStream("【地址】");
3、调用输出流对象write 方法,输出数据:
fos.write(数组(已经导入buffer),偏移量,数组长度);
【
其中数组长度应该调用read 方法的返回值确定,比如:
int temp=fis.read(buffer,0,buffer.length);fos.write(buffer,0,temp);
】