1、字符流、字节流的使用
- 1、对于文本文件(xxx.txt,xxx.java,xxx.c,xxx.cpp)使用字符流
- 2、对于非文本文件(xxx.jpg,xxx,mp3,xxx.mp4,xxx.doc,xxx.ppt),使用字节流。
- 3、如果使用错误,可能会出现乱码。
2、实现图片复制的代码
- 缓冲流可以让读写更快
package test;
import org.junit.Test;
import java.io.*;
/**
* 实现非文本文件的复制
*/
public class TestBuffered {
@Test
public void test(){
BufferedInputStream bufferedInputStream = null;
BufferedOutputStream bufferedOutputStream = null;
try {
//1、造文件
File srcFile = new File("pujing.png");
File destFile = new File("pujing1.png");
//2、造流
//2.1 节点流
FileInputStream fileInputStream = new FileInputStream(srcFile);
FileOutputStream fileOutputStream = new FileOutputStream(destFile);
//2.2缓冲流
bufferedInputStream = new BufferedInputStream(fileInputStream);
bufferedOutputStream = new BufferedOutputStream(fileOutputStream);
//3、复制的细节
byte[] buffer = new byte[5];
int len;
while ((len = bufferedInputStream.read(buffer)) != -1){
bufferedOutputStream.write(buffer);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
//4、资源关闭
//先关闭外层的流,在关闭内层的流,内层可以省略
if (bufferedInputStream != null) {
try {
bufferedInputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (bufferedOutputStream != null) {
try {
bufferedOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
结果: