java I/O中,流式部分分为:Reader,Writer,InputStream,OutputStream和File。
具体内容,这里就不赘述,对I/O存在疑惑的朋友去该网址学习,很好的归纳了I/O: JAVA I/O介绍
本文主要介绍其中read方法和write方法的区别
read方法包括:
1. read(),此方法一个字节一个字节的读取
如以下代码,每次输出的都是读到的字节内容
package test;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class Readtxt {
public static void main(String[] args) {
File file=new File("E:\\pic\\zz.txt");
File file1=new File("E:\\pic\\zz1.txt");
int count=0;
try{
FileInputStream input=new FileInputStream(file);
FileOutputStream output=new FileOutputStream(file1);
int len=-1;
// byte[] buffer=new byte[10];
while((len=input.read())!=-1){
System.out.println(len);
output.write(len);
}
input.close();
output.close();
}catch(IOException e){
e.printStackTrace();
}
}
}
这里输出的len都是读取实际内容,结果如下
72
101
108
108
111
44
109
121
32
110
97
109
101
32
105
115
32
122
101
110
103
122
104
101
110
13
10
13
10
105
39
109
32
50
51
32
121
101
97
114
115
32
111
108
100
46
2. read(buffer),此方法按buffer进行读取,如果文件总共读取的byte长度是46,buffer长度为10,则读取4次,每次读取10个字节,最后一次读取6个字节。
这里len输出的每次读取的buffer长度,最后一次是6
package test;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class Readtxt {
public static void main(String[] args) {
File file=new File("E:\\pic\\zz.txt");
File file1=new File("E:\\pic\\zz1.txt");
int count=0;
try{
FileInputStream input=new FileInputStream(file);
FileOutputStream output=new FileOutputStream(file1);
int len=-1;
byte[] buffer=new byte[10];
while((len=input.read(buffer))!=-1){
System.out.println(len);
output.write(buffer);
}
input.close();
output.close();
}catch(IOException e){
e.printStackTrace();
}
}
}
10
10
10
10
6
3. read(buffer,0,len) 则按照len长度进行读取,例如len长度为5,则读取9次,每次读取5个字节,最后一次读取1个字节。
和第二种方法基本相同,不同的是按照len长度进行读取
package test;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class Readtxt {
public static void main(String[] args) {
File file=new File("E:\\pic\\zz.txt");
File file1=new File("E:\\pic\\zz1.txt");
int count=0;
try{
FileInputStream input=new FileInputStream(file);
FileOutputStream output=new FileOutputStream(file1);
int len=-1;
byte[] buffer=new byte[10];
while((len=input.read(buffer,0,5))!=-1){
System.out.println(len);
output.write(buffer,0,5);
}
input.close();
output.close();
}catch(IOException e){
e.printStackTrace();
}
}
}
输出结果
5
5
5
5
5
5
5
5
5
1
write方法包括:(参照read方法):
1. write()
2. write(buffer) 在这里,和read方法不同的是,如果byte长度是46,则输出5次,每次读取10个字节,最后一次只有6个字节,却多出了4个字节,而采用第三种方法就可以避免你多余输出,占了内存。
3. write(buffer,0,len)