Java通过File的io流读取指定文件夹下的文件,写入指定文件夹

项目需求,可能是读取指定ftp目录下的文件,因为不想搭建ftp,就先用文件夹测试,先记录一下,后期读取文件的代码可以修改一下

@Value("${file.targetFile}")
private String targetFile;   //欲读取文件目标文件夹

@Value("${file.uploadFolder}")
private String uploadFolder; //读取后存放文件的文件夹

/**
 * 读取原文件夹下的文件,同步到指定文件夹
 */
@PostMapping("/file")
public void copyFile() {

    /**
     * 先写成死的读取指定目录下的文件,后期可能要从ftp上面拿取
     */
    //日期目录
    String mk = ym.dateTime();
    //文件目录
    String fileOldMk = targetFile + mk;
    //复制到文件目录
    String fileNewMk = uploadFolder + mk;

    if (!(new File(fileOldMk)).exists()) {
        System.out.println("源文件目录" + fileOldMk + "不存在,无法复制!");
        return;
    } else {
        //遍历文件夹下所有文件
        File dir = new File(fileOldMk);
        String[] children = dir.list();
        if (children == null) {
            System.out.println("目录不存在或它不是一个目录");
        } else {
            //遍历读取文件,放入指定文件夹下后,删除源文件
            for (int i = 0; i < children.length; i++) {
                String filename = children[i];
                System.out.println(filename);
                //拼接欲下载文件路径
                String fileOldUrl = fileOldMk + "/" + filename;
                //存放文件目录
                String fileNewUrl = fileNewMk + "/" + filename;
                File fileCheck = new File(fileNewUrl);
                //文件已存在不需要下载
                if (fileCheck.exists()) {
                    System.out.println(fileNewUrl + " 文件已存在。");
                    continue;
                }
                FileInputStream fis = null;
                BufferedInputStream bis = null;
                FileOutputStream fos = null;
                BufferedOutputStream bos = null;
                try {
                    fis = new FileInputStream(fileOldUrl);
                    bis = new BufferedInputStream(fis);

                    File filed = new File(fileNewMk);
                    //判断文件夹是否存在,不存在就创建一个
                    if (!filed.exists()) {
                        filed.mkdirs();
                    }

                    fos = new FileOutputStream(fileNewUrl);
                    bos = new BufferedOutputStream(fos);
                    int len = 0;
                    while ((len = bis.read()) != -1) {
                        bos.write(len);
                    }

                    bos.flush();
                    // 关闭资源
                    fis.close();
                    bis.close();
                    fos.close();
                    bos.close();

                    //删除源文件,先注释,看后期需不需要放开,需写在流关闭操作下面,否则不生效
                    /*File file = new File(fileOldUrl);
                    if (file.exists()){
                        file.delete();
                    }else {
                        System.out.println("文件不存在");
                    }*/
                } catch (IOException ex) {
                    ex.printStackTrace();
                }
            }
        }
    }
}

删除代码的那段如果放开注释,上面的判断文件是否存在的代码就可以注释或者删除了

你可能感兴趣的:(项目需求功能编写,java)