- 字节流:
可以处理文字,图片,视频格式。
public static void main(String[] args){
FileInputStream fis=null;
FileOutputStream fos=null;
try {
fis=new FileInputStream("E:\\000file\\read.txt");
fos=new FileOutputStream("E:\\000file\\write.txt",true);
byte[] buff=new byte[1024];
int len=0;
while((len=fis.read(buff))!=-1){
fos.write(buff,0,len);
}
}catch(IOException e) {
e.printStackTrace();
}finally{ //fis和fos放在finally中,无论上述程序是否发生异常,
try{
if(fis != null){
fis.close();
}
}catch (IOException e){
e.printStackTrace();
}finally {//为了解决fis发生中断后,fos不能执行的问题
try {
if(fos != null)
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
2. 字符流
注意:字符流不能拷贝图片,视频,音频,因为信息会丢失。
public static void main(String[] args){
Reader reader=null;
Writer writer=null;
try {
reader=new FileReader("E:\\000file\\read.txt");
writer=new FileWriter("E:\\000file\\FileWriter.txt",true);
char[] chars=new char[1024];
int len=0;
while((len=reader.read(chars))!= -1){
writer.write(chars,0,len);
}
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
if(reader != null) reader.close();
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
if(writer != null) writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
- 字符缓冲流
注意:要明确缓冲的存在是为了增强流的功能,在建立缓冲区对象时,需要先有流对象存在, 使用字符流缓冲区拷贝文件文本。
原理:就是对数组进行封装。
public static void main(String[] args){
Reader reader=null;
Writer writer=null;
BufferedReader br=null;
BufferedWriter bw=null;
try {
//字符输入输出流
reader=new FileReader("E:\\000file\\read.txt");
writer=new FileWriter("E:\\000file\\BufferedWriter.txt",true);
//字符输入输出缓冲流
br=new BufferedReader(reader);
bw=new BufferedWriter(writer);
String line=null;
while((line=br.readLine()) != null){
bw.write(line);//一次写一行
bw.flush();//刷新缓冲区
bw.newLine();//readLine没有默认换行
}
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
if(br != null) br.close();
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
if(bw != null) bw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
4. 装饰器模式
问题:每一行添加数字。
public static void main(String[] args){
Reader reader=null;
Writer writer=null;
BufferedReader br=null;
BufferedWriter bw=null;
try {
reader=new FileReader("E:\\000file\\read.txt");
writer = new FileWriter("E:\\000file\\line.txt", true);
br = new BufferedReader(reader);
bw = new BufferedWriter(writer);
int count=0;
String line=null;
while ((line=br.readLine())!= null){
count++;
bw.write(count+":"+line);
bw.flush();
bw.newLine();
}
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
if(br != null) br.close();
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
if(bw != null)
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}