.\key.p12:打开失败:ENOENT(没有这样的文件或目录)

2024-03-01

在我的 Android 应用程序中,我正在访问 Google 云存储。我已经生成了私钥xxxxxxkey.p12.我已将密钥文件放在资产文件夹中。但在运行项目时,它不会打开 key.p12 文件。我已经尝试将其放在资产文件夹之外,仍然没有结果。

     httpTransport = AndroidHttp.newCompatibleTransport(); 
            AssetManager am = getAssets();
            InputStream inputStream = am.open("xxxxxxxxxxKey.p12");
            File file = createFileFromInputStream(inputStream);

       GoogleCredential credential = new GoogleCredential.Builder()
                            .setTransport(httpTransport)
                            .setJsonFactory(JSON_FACTORY)
                            .setServiceAccountId(xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx@developer.gserviceaccount.com")
                            .setServiceAccountScopes(Collections.singleton(STORAGE_SCOPE))
                            .setServiceAccountPrivateKeyFromP12File(file).build();

从输入流创建文件()

private File createFileFromInputStream(InputStream inputStream) {

        try {
            File f = new File("download/MyKey.p12");
            OutputStream outputStream = new FileOutputStream(f);
            byte buffer[] = new byte[1024];
            int length = 0;

            while ((length = inputStream.read(buffer)) > 0) {
                outputStream.write(buffer, 0, length);
            }

            outputStream.close();
            inputStream.close();

            return f;
        } catch (IOException e) {
            // Logging exception
        }

        return null;
    }

我在java项目中做了同样的事情。有什么不同,是因为android吗?或者文件位置的路径不正确?


经过一番努力,我得到了答案,非常感谢您的支持。竖起大拇指!

可以使用以下方式检索文件资产管理器我们也可以把它作为原材料

使用AssetManager

        AssetManager am = getAssets();
        InputStream inputStream = am.open("xxxxxxxxxxKey.p12");
        File file = createFileFromInputStream(inputStream);

As a 原材料,将文件放入res目录内的raw文件夹中

        InputStream ins = getResources().openRawResource(R.raw.keyfile);
        File file = createFileFromInputStream(ins);

在编写输出文件时,您必须指定密钥文件实际所属的位置,在我的情况下,我使用的是 android,我正在文件夹内的内部存储(模拟器/设备)内创建文件钥匙持有人/钥匙文件

private File createFileFromInputStream(InputStream inputStream) {

        String path = "";

        File file = new File(Environment.getExternalStorageDirectory(),
                "KeyHolder/KeyFile/");
        if (!file.exists()) {
            if (!file.mkdirs())
                Log.d("KeyHolder", "Folder not created");
            else
                Log.d("KeyHolder", "Folder created");
        } else
            Log.d("KeyHolder", "Folder present");

       path = file.getAbsolutePath();

        try {
            File f = new File(path+"/MyKey");
            OutputStream outputStream = new FileOutputStream(f);
            byte buffer[] = new byte[1024];
            int length = 0;

            while ((length = inputStream.read(buffer)) > 0) {
                outputStream.write(buffer, 0, length);
            }

            outputStream.close();
            inputStream.close();

            return f;
        } catch (IOException e) {
            // Logging exception
            e.printStackTrace();
        }

        return null;
    }

就是这样!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

.\key.p12:打开失败:ENOENT(没有这样的文件或目录) 的相关文章

随机推荐