Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.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/android/181.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
Java 打开下载的文件并复制它_Java_Android - Fatal编程技术网

Java 打开下载的文件并复制它

Java 打开下载的文件并复制它,java,android,Java,Android,我试图打开一个文件,我要求我的用户下载,以便我可以使用它,所以我试图复制到我的内部存储 我尝试使用以下代码: Intent myIntent = new Intent(Intent.ACTION_OPEN_DOCUMENT); myIntent.setType("text/*"); myIntent.addCategory(Intent.CATEGORY_OPENABLE); startActivityForResult(myIntent, 100);

我试图打开一个文件,我要求我的用户下载,以便我可以使用它,所以我试图复制到我的内部存储

我尝试使用以下代码:

    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());
    }
}
但是当我运行这段代码时,我得到了一个
文件未找到异常
。所以我检查了从intent中得到的
URI
,它不是文件的路径,而是这个路径

 /document/primary:Download/5643_05072018-13-48.csv
我不知道如何使用这个
URI
。 我使用
ACTION\u GET\u CONTENT
intent得到了一个Simmmiller的重新ALT

所以我的问题是,我可以使用这个代码和我复制那个文件的
URI
,还是我需要用另一种方式?在这两种情况下,情况如何

in=newfileinputstream(inputFile.getPath())

改为:

InputStream is = getContentResolver().openInputStream(inputFile);
不要把输入文件命名为uri