Trying to get the path for a file in the assets or raw directory(尝试获取ASSET或RAW目录中文件的路径)
问题描述
Android Studio 0.8.1
您好,
我使用keytool
创建了一个名为snapzkeystore.bks
的密钥库。我想要获取路径,这样我就可以将其传递给函数并加载它。然而,我似乎无法理解这条路。我也尝试过将其放在RAW和Assets文件夹中,并尝试以这种方式获取它并测试它的工作方式,然而,我也得到了调用此函数的FileNotFoundException
keyStoreFile.load(fileInputStream, password)
(以下代码)
将其放入原始文件夹时正在尝试获取测试1:
String uri = "android.resource://" + getActivity().getPackageName() + "/" + R.raw.snapzkeystore;
snapClient.makeRequest(uri.toString());
我得到了FileNotFoundException异常,并且字符串包含:
android.resource://com.sunsystem.snapzui/2131034112
我还尝试使用Assets文件夹,而不是使用测试2:
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());
}
我得到了FileNotFoundException异常,并且字符串包含:
android.content.res.AssetManager$AssetInputStream@5363f738
加载密钥库的源代码段:
public int makeRequest(String keyStoreFileName) {
try {
KeyStore keyStoreFile = KeyStore.getInstance(KeyStore.getDefaultType());
FileInputStream fileInputStream = new FileInputStream(keyStoreFileName);
// FileNotFoundException
keyStoreFile.load(fileInputStream, password);
只是一个简单的问题,放置密钥库的最佳文件夹是raw
还是assets
?
非常感谢您的建议
推荐答案
我希望获得路径,以便可以将其传递给函数并加载它。但是,我似乎找不到路径
这是因为没有路径。这些不是文件。它们是APK文件中的条目。
我得到FileNotFoundException异常,并且字符串包含:
android.content.res.AssetManager$AssetInputStream@5363f738
这是因为您对从AssetManager
返回的InputStream
调用了toString()
。
加载密钥库的源代码段
load()
取InputStream
。您不必使用FileInputStream
。欢迎您将从AssetManager
获得的InputStream
传递给load()
:
KeyStore keyStoreFile = KeyStore.getInstance(KeyStore.getDefaultType());
keyStoreFile.load(resources.getAssets().open("snapzkeystore.bks"), password);
只是一个简单的问题,放置密钥库的最佳文件夹是原始文件夹还是资产文件夹?
任何一个都应该很好。您可以在Resources
上使用openRawResource()
,以获取原始资源上的InputStream
。
这篇关于尝试获取ASSET或RAW目录中文件的路径的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:尝试获取ASSET或RAW目录中文件的路径
- android 4中的android RadioButton问题 2022-01-01
- Android - 我如何找出用户有多少未读电子邮件? 2022-01-01
- 想使用ViewPager,无法识别android.support.*? 2022-01-01
- 如何检查发送到 Android 应用程序的 Firebase 消息的传递状态? 2022-01-01
- 使用自定义动画时在 iOS9 上忽略 edgesForExtendedLayout 2022-01-01
- 在测试浓缩咖啡时,Android设备不会在屏幕上启动活动 2022-01-01
- MalformedJsonException:在第1行第1列路径中使用JsonReader.setLenient(True)接受格式错误的JSON 2022-01-01
- 用 Swift 实现 UITextFieldDelegate 2022-01-01
- Android viewpager检测滑动超出范围 2022-01-01
- Android - 拆分 Drawable 2022-01-01