博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java中FileInputStream和FileOutputStream类实现文件夹及文件的复制粘贴
阅读量:7254 次
发布时间:2019-06-29

本文共 2701 字,大约阅读时间需要 9 分钟。

基本思路就是边搜索边复制,这里用的是广度搜索(BFS)

import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.util.ArrayDeque;public class CopyFile {    public static void main(String[] args) {        File f1 = new File("kkk");        File f2 = new File("D:\\");        try {            getPathBFS(f1,f2);        } catch (IOException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }    }        /**     * 用于读和写     * @param f1 输入流     * @param f2 输出流     */    private static void copyFile(File f1,String f2){        InputStream in = null;        OutputStream out = null;        try {            in = new BufferedInputStream(new FileInputStream(f1));            out = new BufferedOutputStream(new FileOutputStream(f2));            byte by[] = new byte[1024];            int len = 0;            while((len = in.read(by))!=-1){                out.write(by, 0, len);            }        } catch (FileNotFoundException e) {            e.printStackTrace();        }catch (IOException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }finally{            if(in!=null){                try {                    in.close();                } catch (IOException e) {                    // TODO Auto-generated catch block                    e.printStackTrace();                }            }            if(out != null){                try {                    out.close();                } catch (IOException e) {                    // TODO Auto-generated catch block                    e.printStackTrace();                }            }        }    }    /**     * 用于搜索     * @param f1 目标文件     * @param f2 复制到的目标     * @throws IOException     */    private static void getPathBFS(File f1,File f2) throws IOException {        //运用队列进行广度搜索        ArrayDeque
deque = new ArrayDeque
(); //用于存储复制目标文件 ArrayDeque
dequeCopy = new ArrayDeque
(); //第一个File实例入队 deque.offer(f1); //创建第一个文件夹 f2 = new File(f2,f1.getName()); dequeCopy.offer(f2); //队列为空时停止 while(!deque.isEmpty()){ //取队头 File[] ff = deque.peek().listFiles(); File copyFiledir = dequeCopy.peek(); //创建文件夹 copyFiledir.mkdir(); //出队 deque.poll(); dequeCopy.poll(); for(int i=0;i

 

转载于:https://www.cnblogs.com/hnzyyTl/p/4970104.html

你可能感兴趣的文章
微软等厂商高管谈安全云面临的挑战
查看>>
RSA大会主角 云安全
查看>>
微软BI 之SSAS 系列 - 多维数据集维度用法之三 多对多维度 Many to Many
查看>>
C#Winform程序如何发布并自动升级(图解)
查看>>
Linux环境下VI/VIM编辑文件时无权限保存的解决方法
查看>>
【object-c基础】object-c基础之二:property,assign,copy,retain,release
查看>>
Oracle--plsql游标创建和使用
查看>>
Android自动化测试之使用java调用monkeyrunner
查看>>
Android API之android.os.Parcelable
查看>>
测试JdbcTemplate执行SQL语句和存储过程
查看>>
tableview 里面的 必须配套使用的方法
查看>>
ClassLoader工作机制
查看>>
子查询
查看>>
Android使用FFMpeg实现推送视频直播流到服务器
查看>>
(转)8 Tactics to Combat Imbalanced Classes in Your Machine Learning Dataset
查看>>
电信网络拓扑图自动布局之总线
查看>>
微信开放平台开发——网页微信扫码登录(OAuth2.0)
查看>>
DataList和Repeat无数据时提示暂无数据几种方法
查看>>
SharePoint is Flowers and Rainbows and Unicorns
查看>>
【转载】ASP.NET MVC:通过 FileResult 向 浏览器 发送文件
查看>>