java - 使用参数时无法检索文件
问题描述
在传递参数以搜索文件时遇到问题。基本上在尝试读取文件时,此代码有效:
private void setContent(){
String text = "";
String randomText = "";
try
{
InputStream input = getAssets().open("files/jokes.txt");
int size = input.available();
byte[] buffer = new byte[size];
input.read(buffer);
input.close();
// byte buffer into a string
text = new String(buffer);
String[] splitText = text.split("###");
Random rand = new Random();
int randomIndex = rand.nextInt(splitText.length);
randomText = splitText[randomIndex];
}
catch (Exception e) {
System.out.println(e);
}
contentText.setText(randomText);
}
注意上面的 InputStream。我的文本文件存储在assets/files/jokes.txt 中。
现在我尝试使用一个意图将文件名进行参数化,它总是会遇到 catch 语句,文件名在经过时被捕获为“”:
主要活动:
jokesButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
openContentPage("jokes");
}
});
poemsButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
openContentPage("poems");
}
});
funnyStoriesButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
openContentPage("funnyStories");
}
});
...
private void openContentPage(String v) {
if (v.equals("jokes")) {
Intent intentContentPage = new Intent(MainActivity.this, Content.class);
intentContentPage.putExtra("keyPage", "jokes");
startActivity(intentContentPage);
} else if (v.equals("poems")) {
Intent intentContentPage = new Intent(MainActivity.this, Content.class);
intentContentPage.putExtra("keyPage", "poems");
startActivity(intentContentPage);
} else if (v.equals("funnyStories")) {
Intent intentContentPage = new Intent(MainActivity.this, Content.class);
intentContentPage.putExtra("keyPage", "funnyStories");
startActivity(intentContentPage);
}
内容:
private void setContent(){
String text = "";
String randomText = "";
String keyPageValue = getIntent().getStringExtra("keyPage");
String fileName = "";
if(keyPageValue.equals("jokes") ){
fileName.equals("files/jokes.txt");
}
else if (keyPageValue.equals("poems")){
fileName.equals("files/poems.txt");
}
else if (keyPageValue.equals("funnyStories")){
fileName.equals("files/funnystories.txt");
}
try {
InputStream input = getAssets().open(fileName);
int size = input.available();
byte[] buffer = new byte[size];
input.read(buffer);
input.close();
// byte buffer into a string
text = new String(buffer);
String[] splitText = text.split("###");
Random rand = new Random();
int randomIndex = rand.nextInt(splitText.length);
randomText = splitText[randomIndex];
}
catch (Exception e) {
System.out.println(e);
}
contentText.setText(randomText);
}
怎么不选择呢?如前所述,所有文件都存储在 assets/files 文件夹中。
解决方案
推荐阅读
- android - 在 Android Unity 上找不到 gdiplus.dll
- php - 如何在循环内回显一个单词两次和另一个单词一次
- json - Jenkinsfile JSON 对象返回 null
- c++ - 英特尔 DAAL 2017 Beta 更新 1 编译错误
- amazon-web-services - 如何使用第三方应用程序登录亚马逊 mws
- node.js - 如何使用 Nodejs 在 IBM watson 助手中添加对话节点的更新多个响应
- java - 在 SpringBoot 中创建一个可重用的 Reader 类
- xml - 从特定的 excel 范围创建 XML
- vaadin - Vaadin Flow Grid 没有高度
- android - 如何在最新的 Android 工作室(即 v3.1.1)中分析视图层次结构