Как я могу прочитать из двоичного файла? - PullRequest
0 голосов
/ 08 июня 2011

Я хочу прочитать двоичный файл размером 5.5 megabyte (mp3-файл).Я попробовал это с fileinputstream, но потребовалось много попыток.Если возможно, я хочу прочитать файл с минимальной тратой времени.

Ответы [ 3 ]

4 голосов
/ 08 июня 2011

Вы должны попытаться использовать BufferedInputStream вокруг вашего FileInputStream. Это значительно улучшит производительность.

new BufferedInputStream(fileInputStream, 8192 /* default buffer size */);

Кроме того, я бы рекомендовал использовать метод чтения, который берет байтовый массив и заполняет его вместо простого чтения.

2 голосов
/ 08 июня 2011

В FileUtils есть полезные утилиты для чтения файла сразу. Это проще и эффективнее для скромных файлов размером до 100 МБ.

byte[] bytes = FileUtils.readFileToByteArray(file); // handles IOException/close() etc.
0 голосов
/ 08 июня 2011

Попробуйте это:

public static void main(String[] args) throws IOException
{
    InputStream i = new FileInputStream("a.mp3");
    byte[] contents = new byte[i.available()];
    i.read(contents);
    i.close();
}

Более надежная версия на основе полезного комментария @Paul Cager & Liv, касающегося доступных и чтения ненадежности .

public static void main(String[] args) throws IOException
{
    File f = new File("c:\\msdia80.dll");
    InputStream i = new FileInputStream(f);
    byte[] contents = new byte[(int) f.length()];

    int read;
    int pos = 0;
    while ((read = i.read(contents, pos, contents.length - pos)) >= 1)
    {
        pos += read;
    }
    i.close();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...