项目场景:
Java的 IO流
练习之 复制单级目录下所有文件
例如:将d盘下的 demo
文件夹内所有文件复制到d盘下的 copydemo
文件夹内
代码入下:
public class CopyFolderDemo {
public static void main(String[] args) throws IOException{
// 封装数据源目录
File srcFolder = new File("d:\\demo");
// 封装目的地目录
File destFolder = new File("d:\\copydemo");
// 如果目的地文件夹不存在就创建
if (!destFolder.exists()) {
destFolder.mkdir();
}
// 获取数据源目录下的所有文件的File数组
File[] fileArray = srcFolder.listFiles();
// 遍历File数组得到每一个File对象
for (File file : fileArray) {
String name = file.getName(); // 获取文件名
File newFile = new File(destFolder, name); // 获取文件路径
copyFile(file, newFile);
}
}
private static void copyFile(File file, File newFile) throws IOException {
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(newFile));
byte[] bys = new byte[1024];
int len = 0;
while ((len=bis.read(bys)) != -1) {
bos.write(bys,0,len);
}
bos.close();
bis.close();
}
}
备注:
案例中采用字节缓冲输入输出流主要有两个原因:
一来高效(相较于字节输入输出流),
二来可复制任意类型的文件如 txt, jpg, mp3, mp4, avi(相较于字符输入输出流)
参考引用:
参考刘意JavaSE视频
复制多级目录可参考如下链接,使用递归思想: