如何向运行时创建的文件而不是从互联网发出下载请求?

问题描述

我正在从运行时从api接收的一些json数据中创建一个.csv文件,并将此文件存储在本地的android设备中。但是我想对同一文件进行下载请求。这样就可以让人感觉自己只是从互联网上下载了文件。 (我删除了原来的一个。)

我想要的是-看起来下载通常已正常进行,而实际上是在运行时中创建文件,而不是通过某些url下载文件。另外,必须删除原始文件-这样同一文件就不会在两个地方存在。原始副本应存储在默认的下载文件夹中。

我曾尝试使用Download Manager进行相同操作,并且还授予了所有必要的权限,但是它仍然会提供java.lang.SecurityException: Unsupported path /storage/emulated/0/myFolder例外。

以下是我的代码-

JSONObject obj = new JSONObject();
        JSONArray arr = new JSONArray();
        try {
            for (int i = 0; i < apiData.size(); i++) {
                apiMainClass p = apiData.get(i);

                obj.put("job_title",p.getJobTitle());
                obj.put("name",p..getUserFullname());
                obj.put("email",p.getEmail());
                obj.put("phone",p.getPhone());
                obj.put("applied_time",p.getCreatedAt());

                arr.put(obj);

                obj = new JSONObject();
            }
            Log.e("testing -- ",arr.toString()); //gives right json array as needed

            String csv = CDL.toString(arr); // used org.json.CDL to convert json array to csv string

            String outputPath = Environment.getExternalStorageDirectory().getAbsolutePath() + "/myFolder";
            File dir = new File(outputPath);
            dir.mkdirs();

            File file = new File(outputPath,"data.csv");
            FileOutputStream fos = new FileOutputStream(file);
            fos.write(csv.getBytes()); // data.csv files get successfully created
            fos.close();

            Uri uri = Uri.parse(file.toString());
            DownloadManager manager = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);
            manager.addCompletedDownload("TestTitle","TestBody",true,"text/csv",outputPath,file.length(),true);
        }
        catch (Exception e){
            e.printStackTrace();
        }

注意:apiData是从改型接收的数据 我还没有使用DownloadManager.Request和manager.enqueue(request)是bcoz,它给出了关于uri的例外(uri必须直接指向HTTPS,HTTP等) 我是android开发的新手,请帮助并提前感谢所有人。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...