如何将文件下载为浏览器

Med*_*tor 0 java file-io http

如果我通过浏览器保存mp3文件,第三方库通常与他合作,如果我通过HTTP摇摆自己,那么第三方库由于没有正确编码而无法工作.

我用这个代码

HttpGet first = new HttpGet(url);

first.addHeader("Content-Type", "audio/mpeg");

HttpResponse response = httpclient.execute(first, localContext);
InputStream instream = response.getEntity().getContent();

StringBuilder sb = new StringBuilder();
BufferedReader r = new BufferedReader(new InputStreamReader(instream));
for (String line = r.readLine(); line != null; line = r.readLine()) {
    sb.append(line);
}

instream.close();
String textFile = sb.toString();

BufferedWriter out = new BufferedWriter(new FileWriter("test123.mp3"));
out.write(textFile);
out.close();
Run Code Online (Sandbox Code Playgroud)

怎么了?

也许它编码

Bal*_*usC 6

您使用Reader/ Writer而不是InputStream/ 将二进制文件视为文本文件OutputStream.该BufferedReader#readLine()吃CRLF字节.

只需直接写入InputStream,OutputStream无需将字节按摩到字符并返回并删除CRLF字节.您也不必再担心字符编码了.

InputStream input = response.getEntity().getContent();
OutputStream output = new FileOutputStream("test123.mp3");
byte[] buffer = new byte[1024];

for (int length = 0; (length = input.read(buffer)) > -1;) {
    output.write(buffer, 0, length);
}

output.close();
input.close();
Run Code Online (Sandbox Code Playgroud)

也可以看看: