С помощью файла Apache HttpComponents
вместо Commons-IO
можно загрузить файл. Этот код позволяет загружать файл на Java в соответствии с его URL-адресом и сохранять его в определенном месте назначения.
public static boolean saveFile(URL fileURL, String fileSavePath) {
boolean isSucceed = true;
CloseableHttpClient httpClient = HttpClients.createDefault();
HttpGet httpGet = new HttpGet(fileURL.toString());
httpGet.addHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.3; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0");
httpGet.addHeader("Referer", "https://www.google.com");
try {
CloseableHttpResponse httpResponse = httpClient.execute(httpGet);
HttpEntity fileEntity = httpResponse.getEntity();
if (fileEntity != null) {
FileUtils.copyInputStreamToFile(fileEntity.getContent(), new File(fileSavePath));
}
} catch (IOException e) {
isSucceed = false;
}
httpGet.releaseConnection();
return isSucceed;
}
В отличие от одной строки кода:
FileUtils.copyURLToFile(fileURL, new File(fileSavePath),
URLS_FETCH_TIMEOUT, URLS_FETCH_TIMEOUT);
этот код даст вам больше контроля над процессом и позволит вам указать не только тайм-ауты, но User-Agent
и Referer
значения, которые имеют решающее значение для многих веб-сайтов.
Прямо сейчас вы помещаете объект с единственным свойством uniqueID
в массив; list[someUniqueId]
не будет работать, потому что uniqueID
будет свойством элемента в массиве , а не самого массива. Просто используйте вместо этого объект:
var listObj = {};
for(someCount){
var uniqueID = uuidv4();
listObj[uniqueID] = {
var1: 1,
var2: 2,
};
}
И тогда вы можете получить доступ с помощью
var var1Val = list[uniqueID].var1
Если у вас есть признаки того, что вы всегда обращаетесь к свойствам из (то есть, uniqueID
s), вероятно, лучше не использовать массив где-либо в коде.
Также, как правильно проверить:
blockquote>if(list[uniqueID] === undefind)
Просто измените на
undefined
, и это должно работать просто отлично.