weipeng2266 2021-07-18 10:21 采纳率: 78.6%
浏览 15
已采纳

求解,为什么不小心把输出流里面的新路径写成了旧路径,结果还是把文件复制到了新路径里面?

//将课件里面的所有MP4提取出来复制到自己创建的一个新文件夹中
public class Test02 {
public static void main(String[] args){
File file = new File("E:\课件");
long start = System.currentTimeMillis();
getVideoFiles1(file);
long end = System.currentTimeMillis();
System.out.println(end-start);
}

private static void getVideoFiles1(File file){
    File[] lf = file.listFiles(new FileFilter() {
        @Override
        public boolean accept(File pathname) {
            return pathname.isDirectory() || pathname.getName().toLowerCase().endsWith(".mp4");
        }
    });
    
    for (File fi : lf) {
        if(fi.isFile()){
            add(fi);
        }else{
            getVideoFiles1(fi);
        }
    }
}
public static void add(File f){
    
    //创建文件夹接收文件
    File file = new File("E:\\exd",f.getName());
    int num = 0;
    while (file.exists()){
        File file1 = new File("E:\\exd",file.getName()+(++num)+"_副本.mp4");
        file = file1;
    }
    //将得到的指定文件读取到内存
    try {
        file.createNewFile();
    } catch (IOException e1) {
        e1.printStackTrace();
    }
    System.out.println(file);
    System.out.println(f);
    try(
        BufferedInputStream bis = new BufferedInputStream(new FileInputStream(f.getAbsolutePath()));
        //将读取的到的文件写入到新的路径
        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(file.getAbsolutePath()));) {
        byte[] bytes = new byte[bis.available()];
        bis.read(bytes);
        bos.write(bytes);
    } catch (Exception e) {
        e.printStackTrace();
    }    
}

}//将课件里面的所有MP4提取出来复制到自己创建的一个新文件夹中
public class Test02 {
public static void main(String[] args){
File file = new File("E:\课件");
long start = System.currentTimeMillis();
getVideoFiles1(file);
long end = System.currentTimeMillis();
System.out.println(end-start);
}

private static void getVideoFiles1(File file){
    File[] lf = file.listFiles(new FileFilter() {
        @Override
        public boolean accept(File pathname) {
            return pathname.isDirectory() || pathname.getName().toLowerCase().endsWith(".mp4");
        }
    });
    
    for (File fi : lf) {
        if(fi.isFile()){
            add(fi);
        }else{
            getVideoFiles1(fi);
        }
    }
}
public static void add(File f){
    
    //创建文件夹接收文件
    File file = new File("E:\\exd",f.getName());
    int num = 0;
    while (file.exists()){
        File file1 = new File("E:\\exd",file.getName()+(++num)+"_副本.mp4");
        file = file1;
    }
    //将得到的指定文件读取到内存
    try {
        file.createNewFile();
    } catch (IOException e1) {
        e1.printStackTrace();
    }
    System.out.println(file);
    System.out.println(f);
    try(
        BufferedInputStream bis = new BufferedInputStream(new FileInputStream(f.getAbsolutePath()));
        //将读取的到的文件写入到新的路径
        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(file.getAbsolutePath()));) {
        byte[] bytes = new byte[bis.available()];
        bis.read(bytes);
        bos.write(bytes);
    } catch (Exception e) {
        e.printStackTrace();
    }    
}

}//将课件里面的所有MP4提取出来复制到自己创建的一个新文件夹中
public class Test02 {
public static void main(String[] args){
File file = new File("E:\课件");
long start = System.currentTimeMillis();
getVideoFiles1(file);
long end = System.currentTimeMillis();
System.out.println(end-start);
}

private static void getVideoFiles1(File file){
    File[] lf = file.listFiles(new FileFilter() {
        @Override
        public boolean accept(File pathname) {
            return pathname.isDirectory() || pathname.getName().toLowerCase().endsWith(".mp4");
        }
    });
    
    for (File fi : lf) {
        if(fi.isFile()){
            add(fi);
        }else{
            getVideoFiles1(fi);
        }
    }
}
public static void add(File f){
    
    //创建文件夹接收文件
    File file = new File("E:\\exd",f.getName());
    int num = 0;
    while (file.exists()){
        File file1 = new File("E:\\exd",file.getName()+(++num)+"_副本.mp4");
        file = file1;
    }
    //将得到的指定文件读取到内存
    try {
        file.createNewFile();
    } catch (IOException e1) {
        e1.printStackTrace();
    }
    System.out.println(file);
    System.out.println(f);
    try(
        BufferedInputStream bis = new BufferedInputStream(new FileInputStream(f.getAbsolutePath()));
        //将读取的到的文件写入到新的路径
        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(file.getAbsolutePath()));) {
        byte[] bytes = new byte[bis.available()];
        bis.read(bytes);
        bos.write(bytes);
    } catch (Exception e) {
        e.printStackTrace();
    }    
}

}

  • 写回答

1条回答 默认 最新

  • 404警告 2021-07-18 10:37
    关注

    代码如果没问题。或许是没有编译过去 尝试一下

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已采纳回答 7月18日
  • 创建了问题 7月18日

悬赏问题

  • ¥15 求解 yolo算法问题
  • ¥15 虚拟机打包apk出现错误
  • ¥30 最小化遗憾贪心算法上界
  • ¥15 用visual studi code完成html页面
  • ¥15 聚类分析或者python进行数据分析
  • ¥15 三菱伺服电机按启动按钮有使能但不动作
  • ¥15 js,页面2返回页面1时定位进入的设备
  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝