Android 正在尝试获取资产或原始目录中文件的路径

Android 正在尝试获取资产或原始目录中文件的路径,android,assets,Android,Assets,你好, 我已经使用keytool创建了一个名为snapzkeystore.bks的密钥库。我想得到路径,这样我就可以将它传递给函数并加载它。然而,我似乎找不到路。我还尝试将其放入原始和资产文件夹,并尝试以这种方式获取它并测试其工作原理,但是,我还得到了一个调用此函数的FileNotFoundException(fileInputStream,password)(下面的代码) 在放入原始文件夹Test 1时尝试获取它: Android Studio 0.8.1 我得到FileNotFoundEx

你好,

我已经使用
keytool
创建了一个名为
snapzkeystore.bks
的密钥库。我想得到路径,这样我就可以将它传递给函数并加载它。然而,我似乎找不到路。我还尝试将其放入原始和资产文件夹,并尝试以这种方式获取它并测试其工作原理,但是,我还得到了一个调用此函数的
FileNotFoundException
(fileInputStream,password)(下面的代码)

在放入原始文件夹Test 1时尝试获取它:

Android Studio 0.8.1
我得到FileNotFoundException异常,并且字符串包含:

String uri = "android.resource://" + getActivity().getPackageName() + "/" + R.raw.snapzkeystore;
snapClient.makeRequest(uri.toString());
Resources resources = getResources();
InputStream inputStream;
try {
    inputStream = resources.getAssets().open("snapzkeystore.bks");
    byte[] buffer = new byte[inputStream.available()];
    inputStream.read(buffer);
    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
    byteArrayOutputStream.write(buffer);
    byteArrayOutputStream.close();
    inputStream.close();
    Log.d(TAG, "asset: " + inputStream.toString());
    snapClient.makeRequest(inputStream.toString());
} catch (IOException e) {
    Log.d(TAG, "IOException: " + e.getMessage());
}
我还尝试使用assets文件夹,并使用此文件夹代替测试2:

android.resource://com.sunsystem.snapzui/2131034112
我得到FileNotFoundException异常,并且字符串包含:

String uri = "android.resource://" + getActivity().getPackageName() + "/" + R.raw.snapzkeystore;
snapClient.makeRequest(uri.toString());
Resources resources = getResources();
InputStream inputStream;
try {
    inputStream = resources.getAssets().open("snapzkeystore.bks");
    byte[] buffer = new byte[inputStream.available()];
    inputStream.read(buffer);
    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
    byteArrayOutputStream.write(buffer);
    byteArrayOutputStream.close();
    inputStream.close();
    Log.d(TAG, "asset: " + inputStream.toString());
    snapClient.makeRequest(inputStream.toString());
} catch (IOException e) {
    Log.d(TAG, "IOException: " + e.getMessage());
}
用于加载密钥库的源代码段:

android.content.res.AssetManager$AssetInputStream@5363f738
只是一个简单的问题,
raw
assets
哪个文件夹是放置密钥库的最佳文件夹

非常感谢您的建议

我想得到路径,这样我就可以将它传递给函数并加载它。然而,我似乎找不到路

那是因为没有路径。那些不是文件。它们是APK文件中的条目

我得到FileNotFoundException异常,并且字符串包含:
android.content.res.AssetManager$AssetInputStream@5363f738

这是因为您对从
AssetManager
返回的
InputStream
调用了
toString()

用于加载密钥库的源代码段

load()
接受
InputStream
。您不必使用
文件输入流
。欢迎您将从
AssetManager
获得的
InputStream
传递到
load()

只是一个简单的问题,哪一个文件夹是放置密钥库的最佳文件夹,是原始文件夹还是资产文件夹

两者都可以。您可以使用IIRC上的
Resources
上的
openRawResource()
来获取原始资源上的
InputStream