2010-12-27 7 views
4

Я хотел знать максимальный размер файла , который может быть прочитан кодом Java?Что такое максимальный размер файла, который может обрабатывать JVM?

Я хотел обрабатывать размер файла 100mb. Это возможно?

Если возможно, что такое начальные настройки JVM , что я должен сделать?

Пожалуйста, порекомендуйте некоторые рекомендации по обращению с файлом. как использование ObjectInputStream, FilterInputStream и т.д .. использование байтовый массив для хранения содержимого файлов и т.д.

+0

Возможный дубликат http://stackoverflow.com/questions/2356137/read-large-files-in-java –

ответ

3

Какое самое большое число, которое вы можете написать? Это максимальный размер.

Общий размер файла неуместен если вы прочитали его в кусках; в мире нет правила, утверждающего, что вы должны читать в своем 100-мегабайтном файле за один раз, вы можете прочитать его, скажем, в 10 мегабайтах.Что действительно важно, так это то, как вы используете эти входящие данные и нужно ли полностью хранить продукт необработанных данных (например, , если данные являются 3D-моделью здания, как вам нужно внутренне представлять ее) или только соответствующие части (, такие как поиск первых десяти совпадений с некоторым предложением из огромного текстового файла).

Поскольку существует множество возможных способов обработки данных, на ваш вопрос нет вскрывающего одеяла.

+0

Файл должен быть прочитан и сохранен в переменной temp. После обработки файл должен быть сохранен на рабочем столе пользователя с помощью браузера. Когда размер файла огромен, браузер будет висеть. Я хочу избежать этого. – Dinesh

+0

@ Dinesh: Технически абсолютно ничего нет, что помешало бы потоковой передаче файла с диска пользователю через браузер, браузеры поддерживают HTTP-потоки в конце концов. – Esko

+0

спасибо .. Я получил разъяснение спасибо – Dinesh

3

Существует не максимальный размер файла, который можно прочитать теоретически, но я думаю, что это потому, что вы Integer.MAX_VALUEне может инициализировать размер CharBuffer в больше, чем Integer.MAX_VALUE

char[] buffer = new char[/* int size */]; 
char[] buffer = new char[Integer.MAX_VALUE]; // maximum char buffer 

BufferedReader b = new BufferedReader(new FileReader(new File("filename"))); 
b.read(buffer); 
1

Там нет конкретного максимального размера файла поддерживается Java, все это зависит от того, каких ОС вы работаете на. 100 мегабайт не будет проблемой, даже в 32-разрядной ОС.

Вы не сказали, хотите ли вы сразу загрузить файл в память. Вы можете обнаружить, что вам нужно обрабатывать только часть файла за раз. Например, текстовый файл может обрабатывать строку за раз, поэтому нет необходимости загружать весь файл. Просто читайте строку за раз и обрабатывайте каждый.

Если вы хотите прочитать весь файл в один блок памяти, вам может потребоваться изменить размер кучи по умолчанию для вашей JVM. У многих JVM есть значение по умолчанию 128 МБ, чего, вероятно, недостаточно, чтобы загрузить весь ваш файл и по-прежнему иметь достаточно места для других полезных вещей. Проверьте документацию для вашей JVM, чтобы узнать, как увеличить распределение размеров кучи.

4

Единственный максимум, о котором я знаю, - это максимальная длина сообщения(), которая является длинной. Эта длина 2^62 - 1, или очень большая.

Java не будет хранить весь файл в памяти за один раз. Если вы хотите сохранить часть файла в памяти, вы должны использовать один из классов «Буферизованный» (имя класса начинается с Buffered). Эти классы буферизуют часть файла для вас, исходя из установленного вами размера буфера.

Точные классы, которые вы должны использовать, зависят от данных в файле. Если вы более конкретны, мы можем помочь вам выяснить, какие классы использовать.

(Один смиренный примечание: Серьезно, 100mb Это очень мало.)

+0

Я хочу прочитать содержимое файла и отобразить его в браузере. 100mb довольно маленькая, но я хочу представить ее в браузере. даже для 40-мегабайтного браузера висит .. вот почему я получил это сомнение. вы, ребята, действительно замечательные .., чтобы увидеть такой хороший ответ .. :-) – Dinesh

+1

MAX_VALUE long 2^62-1 в качестве подписанного. ;) –

+0

Я думаю, что это правильный ответ на заданный вопрос. – nikk

1

Пока у вас есть более 100 МБ свободного места, вы можете сразу загрузить весь файл в память, хотя вам, вероятно, и не понадобится.

КСТАТИ: В перспективе, что буквы означают

M = Mega or 1 million for disk or 1024^2 for memory. 
B = Bytes (8-bits) 
b = bit e.g. 100 Mb/s 
m = milli e.g. mS - milli-seconds. 

100 милли-бит имеет смысл только для сжатых данных, но я предположил, что это не то, что вы говорите.

Смежные вопросы