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