2

我试图能够在资产文件夹的文件中搜索字符串。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();
   }
    }
4

3 回答 3

3

您正在调用 getAssets,但实际上并没有要从中加载的上下文。您需要将应用程序上下文传递给此类。

public static void LoadStuff(Context appContext, String fileName){

然后

appContext.getAssets().open(fileName);

构造Scanner函数也接受 in InputStream,因此您的行将变为:

 reader = new Scanner(getAssets().open("myFile.txt"));
于 2013-11-05T06:14:54.593 回答
3

首次使用Context马特克拉克回答..

然后第二件事getAssets().open("myFile.txt")InputStream不是File

所以读起来像

InputStream is = context.getAssets().open("myFile.txt");
reader = new Scanner(is); 
于 2013-11-05T06:21:46.607 回答
0

为了使用 getAssets() 方法,您需要有 BaseApplicationContext 或 Activity Context。

尝试使用 context.getAssets()

 AssetManager assets = activityContext.getResources().getAssets();
 InputStream inputStream = assets.open("SlideImages/"+fullImage);
于 2013-11-05T06:09:49.957 回答