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

本教程将介绍.key.p12:打开失败:ENOENT(没有这样的文件或目录)的处理方法,这篇教程是从别的地方看到的,然后加了一些国外程序员的疑问与解答,希望能对你有所帮助,好了,下面开始学习吧。

.key.p12:打开失败:ENOENT(没有这样的文件或目录) 教程 第1张

问题描述

在我的 android 应用程序中,我正在访问 Google 云存储.我已经生成了私钥 xxxxxxxkey.p12.我已将我的密钥文件放在 assets 文件夹中.但是在运行项目时它没有打开 key.p12 文件.我试过把它放在assets文件夹外面,还是没有结果.

  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();

createFileFromInputStream()

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

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

作为原始资源,将文件放在 res 目录下的 raw 文件夹中

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

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

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;
 }

就是这样!

好了关于.key.p12:打开失败:ENOENT(没有这样的文件或目录)的教程就到这里就结束了,希望趣模板源码网找到的这篇技术文章能帮助到大家,更多技术教程可以在站内搜索。