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