打开下载的文件并复制它

问题描述 投票:-5回答:1

我正在尝试打开我要求用户下载的文件,以便我可以使用它,因此我尝试将其复制到我的内部存储中。

我尝试使用此代码:

    Intent myIntent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
    myIntent.setType("text/*");
    myIntent.addCategory(Intent.CATEGORY_OPENABLE);
    startActivityForResult(myIntent, 100);


    protected void onActivityResult(int requestCode, int resultCode, Intent data) {

    if (requestCode == 100) {
        if(resultCode == Activity.RESULT_OK){
            Uri result= data.getData();
            Log.e("fag", result.getPath());

            copyFile(result);


        }
        if (resultCode == Activity.RESULT_CANCELED) {
            Log.e("", "canceled");
        }
    }
    Intent a = new Intent(getApplicationContext(), MainActivity.class);
    startActivity(a);
    }


  private void copyFile(Uri inputFile) {

    FileInputStream in = null;
    FileOutputStream out = null;
    try {
        in = new FileInputStream(inputFile.getPath());
        out = openFileOutput(NAME , MODE_PRIVATE);
        byte[] buffer = new byte[1024];
        while ( in.read(buffer) != -1) {
            out.write(buffer);
        }
        in.close();
        in = null;
        out.close();
        out = null;
    }  catch (FileNotFoundException fnfe1) {
        Log.e("tag", fnfe1.getMessage());
        fnfe1.printStackTrace();
    }
    catch (Exception e) {
        Log.e("tag", e.getMessage());
    }
}

但是当我运行这段代码时,我得到了一个File Not Found Exception。所以我检查了我从意图得到的URI,它不是文件的路径,而是这条路径

 /document/primary:Download/5643_05072018-13-48.csv

我不知道如何使用这个URI。我使用ACTION_GET_CONTENT意图获得了类似的结果。

所以我的问题是我可以使用这个代码和URI,我有复制该文件或我需要以其他方式做到这一点?以及两种情况如何?

java android
1个回答
1
投票

in = new FileInputStream(inputFile.getPath());

改成:

InputStream is = getContentResolver().openInputStream(inputFile);

并且不要将inputFile命名为uri。

© www.soinside.com 2019 - 2024. All rights reserved.