Android - 使用扫描仪读取文件,如何获取文件

2 java android file dir

您好我有一个非常讨厌的问题我想阅读类似于此的文本文件

KEY
0 1 2 3 4 5 6 7
KEYEND
Run Code Online (Sandbox Code Playgroud)

我试图使用扫描仪类,因为它可以返回结果字符串,小数,等等

   public static void LoadStuff(String Name) {
      Scanner reader = null;
      try {
         reader = new Scanner(new File(Name));
      } 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 == "KEY") {   // may be  result.equalsignorecase
            while (result != "KEYEND") {
               int index = reader.nextInt();
               Log.d("Index", String.valueOf(index));
            }
         }
      }
            reader.close();
   }
Run Code Online (Sandbox Code Playgroud)

我不能在上面做,导致扫描仪无法找到文件,解析像"file.txt"不起作用,尝试使用这样的路径"res/data/file.txt"也无法工作在哪里,我应该把文件和如何获取使它工作的目录谢谢

小智 5

此代码使用getAssets()您的类的方法.您需要将文本文件放在Android项目的assets文件夹中.该getAssets方法返回AssetManager对象.该open(String.format("filename.txt"))方法返回一个InputStream.InputStream是DataInputStream的参数.然后使用它作为扫描仪的输入.

try {
    DataInputStream textFileStream = new DataInputStream(getAssets().open(String.format("filename.txt")));
    Scanner sc = new Scanner(textFileStream);
    while (sc.hasNextLine()) {
        String aLine = sc.nextLine();
        System.out.println(aLine);
    }
        sc.close();
} catch (IOException e) {
        e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)