从数据库获取文件路径,并下载到本地
@Component
public class InitAction {
@Autowired
private FilePathService filePathService;
@PostConstruct
public void downFile() {
Properties props = System.getProperties();
String osName = props.getProperty("os.name");
if (osName.matches(".*Mac.*")) {
String basepath = "/tmp/";
List<String> pathLists = new LinkedList<String>();
String filePath1 = basepath + "file";
String filePath2 = basepath + "file2";
pathLists.add(filePath1);
pathLists.add(filePath2);
for (String string : pathLists) {
File file = new File(string);
if (!file.exists()) {
file.mkdirs();
}
}
List<Static_data> lists = this.filePathService.findAllData();
List<String> downUrlLists = new LinkedList<String>();
String filePath = basepath + "file";
for (FilePath filePath : lists) {
downUrlLists.add(filePath.getDown_url());
}
File file = new File(filePath);
if (!file.exists()) {
file.mkdirs();
}
FileOutputStream fileOut = null;
HttpURLConnection conn = null;
InputStream inputStream = null;
try {
for (int i = 0; i < downUrlLists.size(); i++) {
String downUrl = downUrlLists.get(i);
String fileName = downUrl.substring(downUrl.lastIndexOf("/"));
URL httpUrl = new URL(null,downUrl,new Handler());
conn = (HttpURLConnection) httpUrl.openConnection();
conn.setRequestMethod("GET");
conn.setDoInput(true);
conn.setDoOutput(true);
conn.setUseCaches(false);
conn.connect();
inputStream = conn.getInputStream();
BufferedInputStream bis = new BufferedInputStream(inputStream);
if (!filePath.endsWith("/")) {
filePath += "/";
}
fileOut = new FileOutputStream(filePath + fileName);
BufferedOutputStream bos = new BufferedOutputStream(fileOut);
byte[] buf = new byte[4096];
int length = bis.read(buf);
while (length != -1) {
bos.write(buf, 0, length);
length = bis.read(buf);
}
bos.close();
bis.close();
conn.disconnect();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
}