Как уже упоминалось, URLConnection getContentLengthLong()
- ваш лучший выбор, но он не всегда дает определенную длину. Это связано с тем, что протокол HTTP (и другие, которые могут быть представлены как URLConnection
) не всегда передает длину.
В случае HTTP длина динамического контента обычно неизвестна заранее - когда заголовок content-length
обычно отправляется. Вместо этого другой заголовок transfer-encoding
указывает, что используется «чанкованное» кодирование. При кодировании по частям длина всего ответа не указывается, и ответ отправляется обратно по частям, где указывается размер каждого куска. На практике сервер буферизует вывод сервлета. Всякий раз, когда буфер заполняется, отправляется другой кусок. Используя этот механизм, HTTP может фактически начать потоковую передачу ответа бесконечной длины.
Если размер файла превышает 2 ГБ, его размер не может быть представлен как int
, поэтому более старый метод, getContentLength()
вернет -1 в этом случае.
Чтобы прояснить сказанное другими:
[$ -409] - это код локали , указанный в шестнадцатеричном формате. Префикс даты с помощью определенного кода локали определяет, что будет отображаться при использовании различных кодов формата даты и времени. Например, используя дату
28 ноября 1973 г., 11:28:13
в качестве примера для следующей таблицы:
Format Code 409 (English United States) 804 (Chinese PRC)
=========== =========================== =================
m 11 11
mm 11 11
mmm Nov 十一月
mmmm November 十一月
d 27 27
dd 27 27
ddd Mon 二
dddd Monday 星期二
y 73 73
yy 73 73
yyy 1973 1973
yyyy 1973 1973
AM/PM AM 上午
Таким образом, в конечном итоге один и тот же код формата с двумя разными идентификаторами локали дает разные результаты:
[$-409]mmmm dd yyyy h:mm AM/PM
November 27 1973 11:28 AM
[$-804]mmmm dd yyyy h:mm AM/PM
十一月 27 1973 11:28 上午
Поскольку поиск списка кодов языковых стандартов подобен вырыванию зубов, вот несколько ссылок:
Константы и строки идентификатора языка (Первичный источник, archive.is )
Локаль Windows Коды, отсортированные по языку ( archive.is )
Коды локалей Windows, отсортированные по языку ( archive.org , архив. это )
This post explains it. Basically 409 is the locale ID for "English - United States". If you used [$-414]
, for example, then the date would be formatted for "Norwegian (Bokmål)" instead.
My guess for question (2) is that the raw data would be presented as a string instead of being formatted. A quick test would verify this.
Нааф и Грант Вагнер аккуратно ответили на вопрос о ваших $ - 409
, поэтому я просто заполню недостающую часть:
'@' после точка с запятой сообщает Excel, как обрабатывать данные, если вы вводите строку вместо действительной даты. @
просто означает «разместить здесь любой текст дословно».
Несколько простых примеров, поясняющих суть дела:
=TEXT("abc","hh:mm;@")
abc
=TEXT("abc","hh:mm;@@")
abcabc
См. эту статью для подробного описания форматирования текста варианты.
[$-409]
does not appear to be a condition. It seems to be a Locale code.
If I format a cell with a Custom format of [$-409]m/d/yy h:mm AM/PM;@
, enter a date: 1/1/9
, then view the formatting for the cell, I see a Date format of m/d/yy h:mm AM/PM
with a Locale (location) of English (United States)
.
If you change the format to something like [$-439]m/d/yy h:mm AM/PM;@
you'll see the contents of the cell in another language.
I'm not sure about @
. It might indicate how to display the date if the correct font or locale is not available.
Here is list of Locale IDs Assigned by Microsoft.
В Excel 2007 есть ошибка, которая изменяет все общие форматы на формат даты типа [$ -409].
Обычно можно использовать [$ -409].
Microsoft еще не исправила ошибку.
Эта ошибка обычно возникает в больших и общих книгах Excel.
Если у вас когда-либо был опыт, когда все ваши общие форматы меняются на даты, попробуйте перейти в «Стили ячеек», щелкнув правой кнопкой мыши на «Нормальный» и изменив нормальный на общий. В поле будет указан тип формата для Нормального. Это ошибка, поскольку обычно она должна быть «общей», а не какой-то версией [$ -409].
Мне пришлось полностью удалить формат из книги. Для этого необходимо отключить доступ к Рабочей книге. Чтобы удалить формат [$ -409], указанный выше в разделе «Обычный» тип ячейки из книги, щелкните правой кнопкой мыши ячейку, выберите «Пользовательский», прокрутите, пока не найдете указанный выше тип формата [$ -409], затем удалите все форматы. вернется к тому, что называется общим.