【问题标题】:Android - Reading a file using scanner, how to get to the fileAndroid - 使用扫描仪读取文件,如何获取文件
【发布时间】:2012-06-14 11:38:13
【问题描述】:

你好,我遇到了一个很烦人的问题 我想阅读与此类似的文本文件

KEY
0 1 2 3 4 5 6 7
KEYEND

我尝试使用扫描器类,因为它可以以字符串、小数等形式返回结果

   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();
   }

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

【问题讨论】:

    标签: java android file dir


    【解决方案1】:

    此代码使用您班级的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();
    }
    

    【讨论】:

      【解决方案2】:

      我一直用来访问当前项目中的文件(也是文本文件)的代码是:

      textFileStream = new DataInputStream(getAssets().open(String.format("myFile.txt")));
      

      您始终可以使用自己填充的字符串填充 String.format 部分。

      关键一直是

      getAssets()
      

      部分。

      因此,在您的情况下,您可能会看到如下所示的内容:

      reader = new Scanner(new File(getAssets().open(String.format("myFile.txt")))); 
      
      OR
      
      reader = new Scanner(new File(getAssets().open(Name)));
      

      File构造函数可以接受一个I​​nputStream,getAssets().open会返回一个InputStream。

      【讨论】:

        【解决方案3】:

        将您的文本文件放在assets 文件夹中,然后使用getAssets().open("file.txt") 读取它。

        Example

        【讨论】:

        【解决方案4】:
        1. 尝试给出这样的路径"/sdcard/file.txt"

        2. 在比较对象时,请始终使用“equals”。 Never use "==" or "!=" with Objects. (String is an object too in Java)

          例如:

           if (result.equals("KEY"))` {       // equals is used
              `while (!(result.equals("KEYEND")))` {  // !equals is used
          
                 int index = reader.nextInt();
                 Log.d("Index", String.valueOf(index));
              }
           }
          

        【讨论】:

          【解决方案5】:

          要将文件写入内部存储,请使用openFileOutput。根据安卓Data Storagedoc:

          String FILENAME = "hello_file";
          String string = "hello world!";
          
          FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE);
          fos.write(string.getBytes());
          fos.close();
          

          使用 Scanner 读取文件:

          File f = new File( getFilesDir(), FILENAME );
          Scanner s = new Scanner( f );
          

          注意:getFilesDir() 返回文件系统上存储使用 openFileOutput(String, int) 创建的文件的目录的绝对路径。

          要查看您输出到文件的内容,请查看:is it possible to see application data from adb shell the same way I see it mounting SD card?

          其他Storage Options.

          【讨论】:

            【解决方案6】:

            你可以这样做:

            File data = new File("yourfile"); 
            Scanner sc = new Scanner(data);
            int i = 0;
            while(sc.hasNextLine){
                String Lines = sc.nextLine;
                System.out.println(Lines);
                i++;
            }
            

            【讨论】:

              猜你喜欢
              • 2013-12-04
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多