项目需求,可能是读取指定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();
}
}
}
}
}
删除代码的那段如果放开注释,上面的判断文件是否存在的代码就可以注释或者删除了