Java 如何将下载的文件保存在应用程序的缓存文件夹中';什么是记忆?

Java 如何将下载的文件保存在应用程序的缓存文件夹中';什么是记忆?,java,android,rest,android-asynctask,android-download-manager,Java,Android,Rest,Android Asynctask,Android Download Manager,我知道以前也有人问过类似的问题,但实际上没有一个有效的解决方案。我正在通过DownloadManager下载多个PDF文件,我想将这些文件保存到应用程序内存的缓存文件夹中,但找不到任何方法 这是我的代码: public class MainActivity extends AppCompatActivity { Button btn; DownloadManager downloadManager; List<String> myList = new Arr

我知道以前也有人问过类似的问题,但实际上没有一个有效的解决方案。我正在通过DownloadManager下载多个PDF文件,我想将这些文件保存到应用程序内存的缓存文件夹中,但找不到任何方法

这是我的代码:

public class MainActivity extends AppCompatActivity {

    Button btn;
    DownloadManager downloadManager;
    List<String> myList = new ArrayList<String>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        myList.add("https://doc.lagout.org/programmation/Actionscript%20-%20Flash%20-%20Flex%20-%20Air/Flash%20Development%20for%20Android%20Cookbook%20-%20Labrecque%20-%20Packt%20%282011%29/Flash%20Development%20for%20Android%20Cookbook%20-%20Labrecque%20-%20Packt%20%282011%29.pdf");
        myList.add("http://www.csc.kth.se/utbildning/kth/kurser/DD143X/dkand11/Group1Mads/andreas.ulvesand.daniel.eriksson.report.pdf");
        myList.add("http://enos.itcollege.ee/~jpoial/allalaadimised/reading/Android-Programming-Cookbook.pdf");
        myList.add("https://x.coe.phuket.psu.ac.th/warodom/242-320/ebook/9781785883262-ANDROID_PROGRAMMING_FOR_BEGINNERS.pdf");
        myList.add("https://www.cs.cmu.edu/~bam/uicourse/830spring09/BFeiginMobileApplicationDevelopment.pdf");
        myList.add("https://commonsware.com/Android/Android-1_0-CC.pdf");

        btn = findViewById(R.id.download_btn);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                downloadManager = (DownloadManager)getSystemService(Context.DOWNLOAD_SERVICE);
                for(int i = 0; i < myList.size(); i++) {
                    Uri uri = Uri.parse(myList.get(i));
                    DownloadManager.Request request = new DownloadManager.Request(uri);
                    request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
                    Long reference = downloadManager.enqueue(request);
                }
            }
        });
    }
}
public类MainActivity扩展了AppCompatActivity{
按钮btn;
下载管理器下载管理器;
List myList=new ArrayList();
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myList.add(“https://doc.lagout.org/programmation/Actionscript%20-%20Flash%20-%20Flex%20-%20Air/Flash%20Development%20for%20Android%20Cookbook%20-%20Labrecque%20-%20Packt%20%282011%29/Flash%20Development%20for%20Android%20Cookbook%20-%20Labrecque%20-%20Packt%20%282011%29.pdf”);
myList.add(“http://www.csc.kth.se/utbildning/kth/kurser/DD143X/dkand11/Group1Mads/andreas.ulvesand.daniel.eriksson.report.pdf");
myList.add(“http://enos.itcollege.ee/~jpoial/allalaadimised/reading/Android Programming Cookbook.pdf”);
myList.add(“https://x.coe.phuket.psu.ac.th/warodom/242-320/ebook/9781785883262-ANDROID_PROGRAMMING_FOR_BEGINNERS.pdf");
myList.add(“https://www.cs.cmu.edu/~bam/uicourse/830spring09/BFeiginMobileApplicationDevelopment.pdf”);
myList.add(“https://commonsware.com/Android/Android-1_0-CC.pdf");
btn=findviewbyd(R.id.download\u btn);
btn.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
downloadManager=(downloadManager)getSystemService(Context.DOWNLOAD\u服务);
对于(int i=0;i
您可以使用设置下载文件的本地目标

request.setDestinationUri(Uri uri) 
您需要使用
context.getCacheDir()
获取缓存目录并将文件保存到缓存

最后,在xml路径中添加以下代码,以允许提供者获取uri

<cache-path name="cache_files" path="."  />

来自

内部存储: 它随时可用。保存在此处的文件只能由用户访问 应用程序。当用户卸载你的应用程序时,系统将删除你的所有应用程序 来自内部存储的应用程序文件

Android内置下载管理器无法访问应用程序的内部存储,因此您只能通过调用
setdestinationnexternalfilesdir
setdestinationnexternalpublicdir
将文件保存到外部存储目录中


但是,如果要将它们保存在内部存储器中,只需注册一个receive,然后将文件从外部存储器复制到内部存储器。

在何处使用
context.getCacheDir()?以及。我在哪里可以找到paths.xml?有关于这个的更新吗?如何在下载管理器请求中选择应用程序的内部存储或缓存?