我正在尝试打开我要求用户下载的文件,以便我可以使用它,因此我尝试将其复制到我的内部存储中。
我尝试使用此代码:
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
复制该文件或我需要以其他方式执行此操作吗?以及两种情况如何?
答案 0 :(得分:1)
in = new FileInputStream(inputFile.getPath());
更改为:
wallet_date
并且不要将inputFile命名为uri。