分别使用节点流: FilelnputStream、FileOutputStream和缓冲流:BufferedlnputStream、BuferedOutputStream实现文本文件/图片/视频文件的复制。并比较二者在数据复制方面的效率
时间: 2023-06-11 10:09:42 浏览: 106
使用节点流 FilelnputStream 和 FileOutputStream 实现文本文件/图片/视频文件的复制:
```java
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class NodeStreamCopy {
public static void main(String[] args) throws IOException {
File sourceFile = new File("source.txt");
File targetFile = new File("target.txt");
FileInputStream fis = new FileInputStream(sourceFile);
FileOutputStream fos = new FileOutputStream(targetFile);
byte[] buffer = new byte[1024];
int len;
while ((len = fis.read(buffer)) != -1) {
fos.write(buffer, 0, len);
}
fis.close();
fos.close();
}
}
```
使用缓冲流 BufferedlnputStream 和 BuferedOutputStream 实现文本文件/图片/视频文件的复制:
```java
import java.io.File;
import java.io.FileInputStream;
import java.io.BufferedInputStream;
import java.io.FileOutputStream;
import java.io.BufferedOutputStream;
import java.io.IOException;
public class BufferedStreamCopy {
public static void main(String[] args) throws IOException {
File sourceFile = new File("source.txt");
File targetFile = new File("target.txt");
FileInputStream fis = new FileInputStream(sourceFile);
BufferedInputStream bis = new BufferedInputStream(fis);
FileOutputStream fos = new FileOutputStream(targetFile);
BufferedOutputStream bos = new BufferedOutputStream(fos);
byte[] buffer = new byte[1024];
int len;
while ((len = bis.read(buffer)) != -1) {
bos.write(buffer, 0, len);
}
bis.close();
bos.close();
}
}
```
二者在数据复制方面的效率,缓冲流的效率比节点流高,因为缓冲流有一个内部缓冲区,可以减少读写操作系统文件的次数,提高读写效率。但是,缓冲流也有一定的内存开销,如果需要处理大量数据,可能会占用较多的内存。