Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/218.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 无法在SD卡中的文件结尾追加字节-棒棒糖_Android_Fileoutputstream_Android Download Manager_Documentfile - Fatal编程技术网

Android 无法在SD卡中的文件结尾追加字节-棒棒糖

Android 无法在SD卡中的文件结尾追加字节-棒棒糖,android,fileoutputstream,android-download-manager,documentfile,Android,Fileoutputstream,Android Download Manager,Documentfile,我正在构建一个下载管理器来下载文件并将其保存到我的sd卡。对于API>=23,我必须使用它来帮助我在下载失败时恢复文件 但是,在API 21和API 22(棒棒糖)中,无法在Sd卡中写入,但可以在的帮助下完成。我可以在棒棒糖中创建文件和文件夹,但如果文件部分下载,则无法继续下载。我的代码如下: if (file.exists()) { downloaded = (int) file.length(); connect

我正在构建一个下载管理器来下载文件并将其保存到我的sd卡。对于API>=23,我必须使用它来帮助我在下载失败时恢复文件

但是,在API 21和API 22(棒棒糖)中,无法在Sd卡中写入,但可以在的帮助下完成。
我可以在棒棒糖中创建文件和文件夹,但如果文件部分下载,则无法继续下载。我的代码如下:

if (file.exists()) {
                    downloaded = (int) file.length();
                    connection.setRequestProperty("Range", "bytes=" + (file.length()) + "-");

                        String s = file.getPath();
                        String s1 = getRealPathFromURI(documentFile.getUri());
                        s = s.replace(s1, "");
                        Uri uri2 = Uri.parse(documentFile.getUri().toString() + Uri.encode(s));
                        output = getContentResolver().openOutputStream(uri2);
                    } else {
                        connection.setRequestProperty("Range", "bytes=" + downloaded + "-");
                        DocumentFile tempDocumentFile = documentFile.createFile("video/mp4", "temp/" + downloadsPaths.get(i));
                        output = getContentResolver().openOutputStream(tempDocumentFile.getUri());
                    }

它正在重写当前文件。我正在寻找处理附加模式的文档文件。我已提供所有必需的权限。请在此帮助我,提前谢谢。

首先下载到内部存储,然后在下载完成后将完成的结果移动到可移动存储。或者,下载到可移动存储上您可以直接访问的位置(例如,
getExternalCacheDirs()
Second entry),然后在下载完成后将完成的结果移动到其预期位置。@Commonware我必须仅将下载文件保存在sd卡中。我正在处理海量数据~4GB。而且我的许多用户都面临着较低的内部存储问题。此外,复制此数量的数据可能需要5分钟以上。
使用FileOutputStream,这有助于我在下载失败时恢复文件。
。为什么不提及您可以在追加模式下打开FileOutputStream,而在使用Document时,这种可能性会失败。@greenapps可以在可写模式下打开文件(API 21)我一定要使用
openOutputStream
来帮助以可写模式访问sd卡中的文件。现在你真是胡说八道。先下载到内部存储,然后在下载完成后将完成的结果移动到可移动存储。或者,下载到可移动存储上您可以直接访问的位置(例如,
getExternalCacheDirs()
Second entry),然后在下载完成后将完成的结果移动到其预期位置。@Commonware我必须仅将下载文件保存在sd卡中。我正在处理海量数据~4GB。而且我的许多用户都面临着较低的内部存储问题。此外,复制此数量的数据可能需要5分钟以上。
使用FileOutputStream,这有助于我在下载失败时恢复文件。
。为什么不提到你可以在附加模式下打开FileOutputStream,而这种可能性在使用Document时失败。@greenapps为了在可写模式下打开文件(API 21),我必须使用
openOutputStream
,这有助于在可写模式下访问sd卡中的文件。现在你真是胡说八道。