java - 从内部存储中获取图像时出现 FileNotFoundException

标签 java android file filenotfoundexception

文件==> enter image description here ==> enter image description here

正如我在这个图片流中展示的那样,我的图像 (960-Minimalism.jpg) 位于手机内部存储器中,我正试图通过文件类获取它的路径以供进一步使用。

What I have tried yet

第一:

String filePath = MainActivity.this.getFilesDir().getAbsolutePath();
File file = new File(filePath, "960-Minimalism.jpg");

第二个:

File file = new File(Environment.getExternalStorageDirectory()+ "/Android/data/"+ getApplicationContext().getPackageName()
        + "/Files/"+"960-Minimalism.jpg");

极端的硬编码方式:

File file = new File("/data/data/com.example.net/files/","960-Minimalism.jpg")

这里的异常(exception)与第一个..

我知道我在这里遗漏了什么或做错了什么,但直到现在才发现。

任何想法..

编辑

请不要认为我有三个问题。以上是我尝试过的解决方案,但没有用。但问题是我想获取内部存储器中的图像路径。这就是为什么我在这里删除了我的异常(exception)。

最佳答案

除了给出路径,你还可以做其他事情吗?打开手机图库并选择您需要的文件,然后获取文件 uri 并使用它。我遇到过类似的问题,我就是这样解决的。有时文件的扩展名是 jpeg 但它在那里显示 jpg 并给出错误。如果您可以检查文件详细信息以获取正确的文件 扩展名

String filepath = Environment.getExternalStorageDirectory().getAbsolutePath() +...(insert specific file path)
        Bitmap bitmap = BitmapFactory.decodeFile(filepath);

现在您有了可以使用的位图。但是一定要在完成后调用 recycle()` 方法以防止内存泄漏。

要获取文件 Uri,您可以尝试按照我直接从我的项目之一粘贴的代码

  Intent i = new Intent(
                Intent.ACTION_PICK,
                android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);

        startActivityForResult(i, RESULT_LOAD_IMAGE);

这将打开图库供您选择图像。一旦你完成了。重写 onActivityResult 方法如下。

  @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK && null != data) {
               Uri file = data.getData(); 
              }
else{
// no file selected
}
    }

您可以将此文件 Uri 用于您的图像需要。希望对您有所帮助。

关于java - 从内部存储中获取图像时出现 FileNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22006081/

相关文章:

java - Imap 空闲(假)不接收所有电子邮件

java - 转换音频文件以创建图像,并将音频文件转换为 Picture 类可用的格式

java - 如何使用基本布局并在 android 中自定义它

android - 如何在小部件中添加加载

php - Android模拟器连接本地mysql

file - 在TypeScript中创建文件对象类型

java - 使用 Saxon ANT 任务从 jar 引用 XSLT

java - Android、Gradle 产品 flavor ;包不存在

file - Datatable celleditor 中的 Primefaces 文件下载不起作用

Java-在另一个进程更新文件时读取文件