java - 从 FileInputStream 获取 File 对象

标签 java android file

我需要 Android 设备上图像的 File 对象。

我正在使用一个函数来获取给定 URI 的 FileInputStream。

FileInputStream getSourceStream(Uri u) throws FileNotFoundException {
    FileInputStream out = null;
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
        ParcelFileDescriptor parcelFileDescriptor =
                getContentResolver().openFileDescriptor(u, "r");
        FileDescriptor fileDescriptor = parcelFileDescriptor.getFileDescriptor();
        out = new FileInputStream(fileDescriptor);
    } else {
        out = (FileInputStream) getContentResolver().openInputStream(u);
    }
    return out;
}

这将返回一个 FileInputStream。我需要的是图像的 File 对象。如何从 FileInputStream 获取文件?

更新

这就是我获取 URI 的方式:

    Intent intent = new Intent();
    intent.setType("image/*");
    intent.setAction(Intent.ACTION_GET_CONTENT);
    startActivityForResult(Intent.createChooser(intent, ""), PICK_IMAGE);

onActivityResult 上我获取了图像的 URI。

@Override
protected void onActivityResult(int requestCode, int resultCode,
                                 Intent data) {
    super.onActivityResult(requestCode, resultCode, imageReturnedIntent);
    if(resultCode == RESULT_OK){
        String uri = data.getData();
    }
}

最佳答案

您可以使用下面的代码将 FileInputStream 转换为 File 对象。

try {

        File outputFile = new File("YOUR DESIRED FILE PATH");


        FileOutputStream fos = new FileOutputStream(outputFile);
        int c;

        while ((c = fileInputStream.read()) != -1) {
           fos.write(c);
        }

        fileInputStream.close();
        fos.close();
    } catch (FileNotFoundException e) {
        System.err.println("FileStreamsTest: " + e);
    } catch (IOException e) {
        System.err.println("FileStreamsTest: " + e);
    }

这里的“fileInputStream”是 getSourceStream() 返回的对象

关于java - 从 FileInputStream 获取 File 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35617934/

相关文章:

java - 自定义 JDialog 上的聚焦动画

java - android.graphics.Bitmap.sameAs 在 android O 中,当比较 2 个位图相同的配置、尺寸、像素数据时不返回 true

Java:在巨大的磁盘文件上进行随机读取的最快方法

java - GWT 解析不同语言环境中的日期

Android:AudioRecord 类问题:从不调用回调

android - 如何避免db not close和cursor异常

android - LibGDX HTML 项目中 Unresolved GWT 错误

Java读取文本文件并搜索一行

c++ - 写入和读取文件

php - $_SERVER 可以在 PHP 中伪造吗?