我正在尝试在资源文件夹中的文件中搜索字符串。 getassets()。open表示未定义。 我在某处读到了这种方式。 这是我的代码:
import java.io.File;
import java.util.Scanner;
import android.content.Context;
import android.util.Log;
public class Search {
public static void LoadStuff(String Name) {
Scanner reader = null;
try {
reader = new Scanner(new File(getAssets().open("myFile.txt")));
} catch (Exception e) {
Log.d("damn", "FAIL");
}
if(reader != null)
Load(reader);
}
private static void Load(Scanner reader) {
while (reader.hasNext()) {
String result = reader.next();
if (result.equals("water")) {
while (result != "KEYEND") {
int index = reader.nextInt();
Log.d("Index", String.valueOf(index));
}
}
}
reader.close();
}
}
答案 0 :(得分:3)
您正在调用getAssets,但实际上并没有要加载的上下文。您需要将应用程序上下文传递给此类。
public static void LoadStuff(Context appContext, String fileName){
然后
appContext.getAssets().open(fileName);
Scanner
构造函数也在InputStream
中接受,因此您的行将成为:
reader = new Scanner(getAssets().open("myFile.txt"));
答案 1 :(得分:2)
首先使用Context
作为Matt Clark回答..
然后第二件事是getAssets().open("myFile.txt")
是InputStream
而非File
所以读它就像
InputStream is = context.getAssets().open("myFile.txt");
reader = new Scanner(is);
答案 2 :(得分:0)
为了使用getAssets()方法,您需要具有BaseApplicationContext或Activity Context。
尝试使用context.getAssets()
AssetManager assets = activityContext.getResources().getAssets();
InputStream inputStream = assets.open("SlideImages/"+fullImage);