0

我可以通过 HttpUrlConnection 和 InputStream 下载数据,但我需要下载原始数据。所以,我想通过原始数据创建一个下载管理器,然后使用原始数据将此数据转换为二进制或图像格式。根据我的研究,我看到“从 url 下载文件”但我无法在 mac 中下载文件?总是,我得到 FileNotFoundException。请帮我。如何从 url 下载数据?

public class DownloadData extends AsyncTask<Void,Void,Void> {
@Override
protected Void doInBackground(Void... params) {

    try {
        downloadData("https://blablalabla/get");
    } catch (IOException e) {
        e.printStackTrace();
    }
    return null;
}

public void downloadData(String myurl) throws IOException {
    URL u = new URL(myurl);
    InputStream is = u.openStream();

    DataInputStream dis = new DataInputStream(is);

    byte[] buffer = new byte[1024];
    int length;

    OutputStream fos = new FileOutputStream(new File(Environment.getExternalStorageDirectory() + "/Users/ilknurpc/Desktop/text.docx"));
    while ((length = dis.read(buffer))>0) {
        fos.write(buffer, 0, length);
    }


}
}
4

1 回答 1

0

如果你想构建一个可行的下载管理器,我建议你看看 Tomcat Default Servlet Implementation

您需要了解一些 HTTP 标头,例如 E-Tags 和 Http Range Headers 才能正确实现。

值得庆幸的是,Tomcat 默认 Servlet 为您处理了先决条件。

您可以在您的代码中调整这个 servlet,只需稍作更改(包声明等)。

于 2016-06-17T07:36:52.043 回答