читать URL в двоичном режиме в Java - PullRequest
1 голос
/ 06 июня 2010

В Java мне нужно прочитать двоичный файл с сайта и записать его в файл на диске. Этот пример http://java.sun.com/docs/books/tutorial/networking/urls/readingURL.html может успешно читать веб-страницы, но когда я пытаюсь прочитать двоичный файл с моего локального сервера и записать его в файл на диске, содержимое меняется, повреждая двоичный файл. Используя fc, я вижу, что 0x90 изменяется на 0x3F и другие изменения. Как мне получить доступ к бинарным файлам (прочитать URL и записать в файл), не изменяя java или что-либо еще, изменяя ЛЮБЫЕ символы, например, выполнять какие-либо преобразования строки или преобразования символов или что-либо еще, просто читая входной URL и записывая его в виде файла. *

Ответы [ 2 ]

1 голос
/ 06 июня 2010

Вместо наматывания InputStreamReader и BufferedReader вокруг openStream(), просто оберните BufferedInputStream вокруг него.

0 голосов
/ 06 июня 2010

JavaDoc для java.io.InputStreamReader состояний:

InputStreamReader - это мост от байтовых потоков к символьным потокам: он считывает байты и декодирует их в символы с использованием указанной кодировки Используемая им кодировка может быть указана по имени или задана явно, или может быть принят кодовый набор по умолчанию для платформы.

В вашем случае вы просите JVM преобразовать байты в символы, которые будут превращены в строки. Это не то, что вы хотите. Вместо этого либо считывайте байты непосредственно из java.io.InputStream или через java.io.BufferedInputStream.

...