打开下载的文件并复制它

时间:2018-05-08 10:55:19

标签: java android

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

我尝试使用此代码:

    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意图得到了一个simmmilar resualt。

所以我的问题是我可以使用此代码和URI复制该文件或我需要以其他方式执行此操作吗?以及两种情况如何?

1 个答案:

答案 0 :(得分:1)

  

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

更改为:

wallet_date

并且不要将inputFile命名为uri。