android - 将文件保存到android中的内部存储器?

标签 android

我正在借助网络服务提供的 URL 从服务器下载文件。 我对每个版本的设备都成功,但在 OS 4.1 设备中出现异常。 我正在使用以下代码:

public static Boolean DownloadFile(String fileURL, File directory) {
                try {

                        FileOutputStream f = new FileOutputStream(directory);
                        URL u = new URL(fileURL);
                        HttpURLConnection c = (HttpURLConnection) u.openConnection();
                        c.setRequestMethod("GET");
                        c.setDoOutput(true);
                        c.connect();

                        InputStream in = c.getInputStream();

                        byte[] buffer = new byte[1024];
                        int len1 = 0;
                        while ((len1 = in.read(buffer)) > 0) {
                                f.write(buffer, 0, len1);
                        }
                        f.close();
                        return true;
                } catch (Exception e) {
                        e.printStackTrace();
                        return false;
                }
        }

我在 c.getInputStream(); 行得到 java.io.FileNotFoundException 请建议我解决这个问题。

我打算使用内部存储器,但由于用户无法访问内部存储器。

最佳答案

试试这个代码: 请注意,创建文件的 CONTEXT 可能是 Activity/ApplicationContext/etc

public boolean downloadFile(final String path) {
    try {
        URL url = new URL(path);

        URLConnection ucon = url.openConnection();
        ucon.setReadTimeout(5000);
        ucon.setConnectTimeout(10000);

        InputStream is = ucon.getInputStream();
        BufferedInputStream inStream = new BufferedInputStream(is, 1024 * 5);

        File file = new File(CONTEXT.getDir("filesdir", Context.MODE_PRIVATE) + "/yourfile.png");

        if (file.exists()) {
            file.delete();
        }
        file.createNewFile();

        FileOutputStream outStream = new FileOutputStream(file);
        byte[] buff = new byte[5 * 1024];

        int len;
        while ((len = inStream.read(buff)) != -1) {
            outStream.write(buff, 0, len);
        }

        outStream.flush();
        outStream.close();
        inStream.close();

    } catch (Exception e) {
        e.printStackTrace();
        return false;
    }

    return true;
}

关于android - 将文件保存到android中的内部存储器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12585263/

相关文章:

android - 如何避免在Android键盘中弹出字符

android - 如何使工具栏透明并向后放置图像?

android - 带有 EditText 和 OnItemClickListener 的 ListView

Android共享元素过渡,起始位置错误

android - 交替编辑文本提示对阿拉伯语不可见

android - 使用 Activity 在 Android 中动态创建 ScrollView

java - 当我运行应用程序时,已排序的 ArrayList 未显示为已排序

java - 在启动时删除 gluon-mobile 对话框

android - 无法从 fragment 开始新 fragment

android - 如何从另一个类调用引用 (TextView)findViewById