Как использовать массив объектов в качестве справочной таблицы на основе имени свойства

С помощью файла 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 значения, которые имеют решающее значение для многих веб-сайтов.

1
задан nunya07 17 January 2019 в 17:39
поделиться

1 ответ

Прямо сейчас вы помещаете объект с единственным свойством uniqueID в массив; list[someUniqueId] не будет работать, потому что uniqueID будет свойством элемента в массиве , а не самого массива. Просто используйте вместо этого объект:

var listObj = {};
for(someCount){
  var uniqueID = uuidv4();
  listObj[uniqueID] = {
    var1: 1,
    var2: 2,
  };
}

И тогда вы можете получить доступ с помощью

var var1Val = list[uniqueID].var1

Если у вас есть признаки того, что вы всегда обращаетесь к свойствам из (то есть, uniqueID s), вероятно, лучше не использовать массив где-либо в коде.

Также, как правильно проверить:

if(list[uniqueID] === undefind)

Просто измените на undefined, и это должно работать просто отлично.

0
ответ дан CertainPerformance 17 January 2019 в 17:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: