读到缓冲(缓存)里面,中间容器叫做缓冲。
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
public class Test {
public static void main(String[] args) {
//1、创建源
File src = new File("abc.txt");
//2、选择流
InputStream is = null;
try {
is = new FileInputStream(src);
//3、操作(分段读取)
byte[] flush = new byte[3];//缓冲容器
int len = -1;//接收长度
while((len = is.read(flush)) != -1) {
//字节数组-->字符串(解码)
String str = new String(flush, 0, len);
System.out.println(str);
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
//4、释放资源
try {
if(null != is) {
is.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
输出结果:
I a
m g
oin
g t
o s
tud
y j
ava
.
写出的时候,为了避免数据驻留在内存中,建议flush一下。
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
public class Test {
public static void main(String[] args) {
//1、创建源
File dest = new File("desk.txt");
//2、选择流
OutputStream os = null;
try {
os = new FileOutputStream(dest);
//3、操作(写出)
String msg = "I love studying Java!";
//字符串-->字节数组(编码)
byte[] datas = msg.getBytes();
os.write(datas, 0, datas.length);
os.flush();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
try {
if(null != os) {
os.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
运行这个程序后,创建了相应的文件:
加一个append标识,会在文件后面追加内容:
os = new FileOutputStream(dest, true);
false就是覆盖:
os = new FileOutputStream(dest, false);
//3、操作(写出)
String msg = "HELLO";
原来的内容就删掉了。
OutputStream:文件可以不存在,不存在就创建。
FileOutputStream:可以追加内容。