android - 文件不存在 (Android)
问题描述
我有一个代码,用户在其中选择一个文件,程序返回android.net.Uri
所选文件。接下来,程序转换Uri
为java.io.File
. 当我调用File.exists()
程序时返回false
。为什么程序不能与现有文件交互?
(例如,我1.pdf
在我的 microsd 卡上选择,但如果我从内部存储中选择任何其他文件,结果将是相同的)
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("application/pdf");
startActivityForResult(intent, 123);
}
@Override
public void onActivityResult(int requestCode, int resultCode,
Intent resultData) {
super.onActivityResult(requestCode, resultCode, resultData);
if (requestCode == 123
&& resultCode == Activity.RESULT_OK) {
if (resultData != null) {
Uri uri = resultData.getData();
try {
File f=new File(uri.getPath());
Log.e(TAG,"File object "+f.getAbsolutePath()); //returns /document/9016-4EF8:1.pdf
Log.e(TAG,"File exists "+f.exists()); //returns false
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
解决方案
推荐阅读
- reactjs - 页面重新加载后本地存储不保留数据
- python - Matplotlib 改变图形大小
- r - 如果语句条件在 R 中被忽略
- javascript - 返回特定值与任何其他数组值匹配的对象
- filter - 当 SMA 50 超过 SMA 200 时,如何编写脚本以仅绘制买入 MACD 信号
- arrays - 为什么我会收到此错误消息(“实例方法 'appendInterpolation(_:formatter:)' 要求 'Any' 继承自 'NSObject'”)?)
- python - Unittest mock getsize 似乎没有模拟
- c# - 我无法导入 Zxing 库
- sqlalchemy - sqlalchemy - 3 级会员计划
- android - getWindow().setFlags(int flags, int mask) 中的标志和掩码参数是什么?