Java输入输出流
输入流、输出流
输入流:从其他地方如:键盘,文件等输入到程序中;
程序从输入流中读取信息。
输出流:从程序输出到 如文件,显示器等的数据流。
程序向其他位置写信息。
按照最小的数据单位可分为:
字节流:其父类为InputStream,OutputStream;
字符流:其父类为Reader,Writer。
Java中一个字符为两个字节。对与非字符数据,必须用字节流。
节点流:
直接操作特定的目标。为低级流。
处理流:
对已有的流进行处理,相当于电路中的变压器,水龙头的净水器。为程序提供更加强大的读写功能,为过滤流,高级流。
FIS,FOS
FileInputSream and FileOutputStram.文件输入流和文件输出流。
FIS(Read)
int read();
//读取byte填充到int(32位)的第八位,没有时返回-1;
int read(byte[] b);
//从输入流中最多读取b.length()个字节到一个字节数组中,返回读取到字节个数;
int read(byte[] b, int off, int len);
//从输入流中最多读取len个字节到一个字节数组,off为偏移值。
FOS(Write)
写入数据的输出流;
void write(int b);
//将指定字节的数据写入此文件输出流;
void write(byte[] b);
//将长度为b.length()个字节数据从指定字节数组写入到此文件输出流;
void write(byte[] b, int off, int len);
//将指定字节数组从偏移量开始的len个字节写入到此文件的输出流。
BIS and BOS
BufferedInputStream and BufferedOutputStream为带有缓冲的输入输出流。
每次调用时,都会经过缓存区,即读取或者写入时,先操作缓冲区,从而提高了效率。
DIS and DOS
DataInputstream and DataOutputStream 是对流功能的扩展,提供基本类型的输入,输出方法。
DIS常用方法:
int readInt();
//读取四个字节并返回一个int值;
double readDouble();
//读取八个字节,并返回一个double值。
DOS常用方法:
void writeInt(int);
//将一个int值写入输出流;
void writeDouble(double);
//将一个double值写入输出流;
void writeUTF();.....略。
字符流
1. ISR and OSW
一次处理一个字符。
InputStreamReader(ISR):
读取,完成byte流解析为char流,按照编码解析;
OutputStreamWriter(OSW):
写入,提供char流到byte流,按照编码处理。
2. BR and BW
字符流过滤器,极大的方便的文本的读写操作。
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new
FileOutputStream));
String str = null;
while((str = br.read())!=null){//不识别换行
bw.write(str);
bw.newLine();//换行
bw.flush;
}
访问控制台
BufferedReader br = new BUfferedReader(new InoutStreamReader(System.in));
while(ture){
String str = br.readLine();//从控制台一次读一行
System.out.println(str);
if("end".equals(str))break;
}
3. FR and FW
FileReader fr = new FileReader(filename);
FileWriter fw = new FileWriter("d:\\fw.txt");
int c;
while((c = fr.read())!= -1){
fw.write(c);
fw.flush;
}